GetTargetQueue -> GetTargets + Exts

This commit is contained in:
alzeih
2011-04-05 21:40:52 +12:00
committed by Paul Chote
parent 820f67e46b
commit 0a67c68c45
13 changed files with 26 additions and 45 deletions

View File

@@ -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); }
}
}
}

View File

@@ -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 ) );
}
}
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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);
}

View File

@@ -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;
}
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}
}