GetTargetQueue -> GetTargets + Exts
This commit is contained in:
@@ -149,5 +149,10 @@ namespace OpenRA
|
||||
// this is probably a shockingly-slow way to do this, but it's concise.
|
||||
return xs.Except(ys).Concat(ys.Except(xs));
|
||||
}
|
||||
|
||||
public static IEnumerable<T> Iterate<T>( this T t, Func<T,T> f )
|
||||
{
|
||||
for(;;) { yield return t; t = f(t); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,10 +32,19 @@ namespace OpenRA.Traits.Activities
|
||||
else
|
||||
NextActivity = activity;
|
||||
}
|
||||
|
||||
public virtual IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
|
||||
public virtual IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ActivityExts
|
||||
{
|
||||
public static IEnumerable<Target> GetTargetQueue( this Actor self )
|
||||
{
|
||||
return self.GetCurrentActivity().Iterate( u => u.NextActivity ).TakeWhile( u => u != null )
|
||||
.SelectMany( u => u.GetTargets( self ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ namespace OpenRA.Traits
|
||||
if (activity != null && mobile != null)
|
||||
{
|
||||
var alt = new float2(0, -mobile.Altitude);
|
||||
var targets = activity.GetTargetQueue(self);
|
||||
var targets = activity.GetTargets(self);
|
||||
var start = self.CenterLocation + alt;
|
||||
|
||||
var c = Color.Green;
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace OpenRA.Mods.Cnc
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromActor(proc);
|
||||
}
|
||||
|
||||
@@ -41,16 +41,5 @@ namespace OpenRA.Mods.RA.Activities
|
||||
a = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
{
|
||||
if (NextActivity != null)
|
||||
foreach (var target in NextActivity.GetTargetQueue(self))
|
||||
{
|
||||
yield return target;
|
||||
}
|
||||
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,16 +54,5 @@ namespace OpenRA.Mods.RA.Activities
|
||||
// TODO: allow canceling of deliver orders?
|
||||
return false;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
{
|
||||
if (NextActivity != null)
|
||||
foreach (var target in NextActivity.GetTargetQueue(self))
|
||||
{
|
||||
yield return target;
|
||||
}
|
||||
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Mods.RA.Activities
|
||||
self.QueueActivity(new Harvest());
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromPos(self.Location);
|
||||
}
|
||||
|
||||
@@ -43,16 +43,5 @@ namespace OpenRA.Mods.RA.Activities
|
||||
activity.Queue(NextActivity);
|
||||
NextActivity = activity;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
{
|
||||
if (NextActivity != null)
|
||||
foreach (var target in NextActivity.GetTargetQueue(self))
|
||||
{
|
||||
yield return target;
|
||||
}
|
||||
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Mods.RA
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromActor(proc);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Air
|
||||
return this;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromPos(Pos);
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Air
|
||||
return this;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromPos(Dest);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Move
|
||||
return false;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
yield return Target.FromPos(endLocation);
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ namespace OpenRA.Mods.RA.Move
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
if( path != null )
|
||||
return Enumerable.Reverse(path).Select( c => Target.FromCell(c) );
|
||||
@@ -315,9 +315,9 @@ namespace OpenRA.Mods.RA.Move
|
||||
|
||||
protected abstract MovePart OnComplete( Actor self, Mobile mobile, Move parent );
|
||||
|
||||
public override IEnumerable<Target> GetTargetQueue( Actor self )
|
||||
public override IEnumerable<Target> GetTargets( Actor self )
|
||||
{
|
||||
return move.GetTargetQueue(self);
|
||||
return move.GetTargets(self);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user