diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index fc03f4333e..c5012c3577 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -221,6 +221,7 @@ + diff --git a/OpenRA.Game/Traits/Activities/CancelableActivity.cs b/OpenRA.Game/Traits/Activities/CancelableActivity.cs new file mode 100755 index 0000000000..bded180ac1 --- /dev/null +++ b/OpenRA.Game/Traits/Activities/CancelableActivity.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OpenRA.Traits +{ + public abstract class CancelableActivity : IActivity + { + protected IActivity NextActivity { get; private set; } + protected bool IsCanceled { get; private set; } + + public abstract IActivity Tick( Actor self ); + protected virtual bool OnCancel( Actor self ) { return true; } + + public void Cancel( Actor self ) + { + IsCanceled = OnCancel( self ); + if( IsCanceled ) + NextActivity = null; + else if (NextActivity != null) + NextActivity.Cancel( self ); + } + + public void Queue( IActivity activity ) + { + if( NextActivity != null ) + NextActivity.Queue( activity ); + else + NextActivity = activity; + } + + public virtual IEnumerable GetCurrentPath() + { + yield break; + } + } +} diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 7acefd4a17..78964dbcac 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -180,37 +180,6 @@ namespace OpenRA.Traits IEnumerable GetCurrentPath(); } - public abstract class CancelableActivity : IActivity - { - protected IActivity NextActivity { get; private set; } - protected bool IsCanceled { get; private set; } - - public abstract IActivity Tick( Actor self ); - protected virtual bool OnCancel( Actor self ) { return true; } - - public void Cancel( Actor self ) - { - IsCanceled = OnCancel( self ); - if( IsCanceled ) - NextActivity = null; - else if (NextActivity != null) - NextActivity.Cancel( self ); - } - - public void Queue( IActivity activity ) - { - if( NextActivity != null ) - NextActivity.Queue( activity ); - else - NextActivity = activity; - } - - public virtual IEnumerable GetCurrentPath() - { - yield break; - } - } - public interface IRenderOverlay { void Render( WorldRenderer wr ); } public interface INotifyIdle { void Idle(Actor self); }