diff --git a/OpenRA.Mods.RA/Activities/QueuedActivity.cs b/OpenRA.Mods.RA/Activities/QueuedActivity.cs deleted file mode 100644 index e81907e2c1..0000000000 --- a/OpenRA.Mods.RA/Activities/QueuedActivity.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using OpenRA.Traits; -using OpenRA.Traits.Activities; - -namespace OpenRA.Mods.RA.Activities -{ - public class QueuedActivity : Activity - { - public QueuedActivity(Action a) { this.a = a; } - - public QueuedActivity(Action a, bool interruptable) - { - this.a = a; - } - - Action a; - - public override Activity Tick(Actor self) { return Run(self); } - - public Activity Run(Actor self) - { - if (a != null) - a(this); - - return NextActivity; - } - - public void Insert( Activity activity ) - { - if (activity == null) - return; - activity.Queue(NextActivity); - NextActivity = activity; - } - } -} diff --git a/OpenRA.Mods.RA/Move/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs index 181e32b4aa..c5365d7ea3 100755 --- a/OpenRA.Mods.RA/Move/Mobile.cs +++ b/OpenRA.Mods.RA/Move/Mobile.cs @@ -246,30 +246,32 @@ namespace OpenRA.Mods.RA.Move // Couldn't find a cell return target; } + + void PerformMoveInner(Actor self, int2 targetLocation, bool queued) + { + int2 currentLocation = NearestMoveableCell(targetLocation); + if (!CanEnterCell(currentLocation)) + { + if (queued) self.CancelActivity(); + return; + } + + if (!queued) self.CancelActivity(); + + ticksBeforePathing = avgTicksBeforePathing + self.World.SharedRandom.Next(-spreadTicksBeforePathing, spreadTicksBeforePathing); + + self.QueueActivity(new Move(currentLocation, 8)); + + self.SetTargetLine(Target.FromCell(currentLocation), Color.Green); + } + protected void PerformMove(Actor self, int2 targetLocation, bool queued) { - var ph = new QueuedActivity( - (qa) => - { - int2 currentLocation = NearestMoveableCell(targetLocation); - - if (!CanEnterCell(currentLocation)) - { - if (queued) self.CancelActivity(); - return; - } - - if (!queued) self.CancelActivity(); - - ticksBeforePathing = avgTicksBeforePathing + self.World.SharedRandom.Next(-spreadTicksBeforePathing, spreadTicksBeforePathing); - - qa.Insert(new Move(currentLocation, 8)); - - self.SetTargetLine(Target.FromCell(currentLocation), Color.Green); - }); - - self.QueueActivity(queued ? ph : ph.Run(self)); + if (queued) + self.QueueActivity(new CallFunc(() => PerformMoveInner(self, targetLocation, queued))); + else + PerformMoveInner(self, targetLocation, queued); } public void ResolveOrder(Actor self, Order order) diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 92be21f30b..9ac106493d 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -56,7 +56,6 @@ -