Add plumbing to make Turn uninterruptible
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user