Add plumbing to make Turn uninterruptible

This commit is contained in:
reaperrr
2018-06-09 18:25:50 +02:00
committed by Paul Chote
parent c93333a816
commit e167d1f848

View File

@@ -21,22 +21,25 @@ namespace OpenRA.Mods.Common.Activities
readonly IFacing facing; readonly IFacing facing;
readonly int desiredFacing; readonly int desiredFacing;
public Turn(Actor self, int desiredFacing) public Turn(Actor self, int desiredFacing, bool isInterruptible = true)
{ {
disablable = self.TraitOrDefault<IMove>() as IDisabledTrait; disablable = self.TraitOrDefault<IMove>() as IDisabledTrait;
facing = self.Trait<IFacing>(); facing = self.Trait<IFacing>();
this.desiredFacing = desiredFacing; this.desiredFacing = desiredFacing;
IsInterruptible = isInterruptible;
} }
public override Activity Tick(Actor self) public override Activity Tick(Actor self)
{ {
if (IsCanceled) if (IsInterruptible && IsCanceled)
return NextActivity; return NextActivity;
if (disablable != null && disablable.IsTraitDisabled) if (disablable != null && disablable.IsTraitDisabled)
return this; return this;
if (desiredFacing == facing.Facing) if (desiredFacing == facing.Facing)
return NextActivity; return NextActivity;
facing.Facing = Util.TickFacing(facing.Facing, desiredFacing, facing.TurnSpeed); facing.Facing = Util.TickFacing(facing.Facing, desiredFacing, facing.TurnSpeed);
return this; return this;