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. // this is probably a shockingly-slow way to do this, but it's concise.
return xs.Except(ys).Concat(ys.Except(xs)); 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

@@ -33,9 +33,18 @@ namespace OpenRA.Traits.Activities
NextActivity = activity; NextActivity = activity;
} }
public virtual IEnumerable<Target> GetTargetQueue( Actor self ) public virtual IEnumerable<Target> GetTargets( Actor self )
{ {
yield break; 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) if (activity != null && mobile != null)
{ {
var alt = new float2(0, -mobile.Altitude); var alt = new float2(0, -mobile.Altitude);
var targets = activity.GetTargetQueue(self); var targets = activity.GetTargets(self);
var start = self.CenterLocation + alt; var start = self.CenterLocation + alt;
var c = Color.Green; var c = Color.Green;

View File

@@ -86,7 +86,7 @@ namespace OpenRA.Mods.Cnc
return true; return true;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromActor(proc); yield return Target.FromActor(proc);
} }

View File

@@ -41,16 +41,5 @@ namespace OpenRA.Mods.RA.Activities
a = null; a = null;
return true; 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? // TODO: allow canceling of deliver orders?
return false; 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()); self.QueueActivity(new Harvest());
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromPos(self.Location); yield return Target.FromPos(self.Location);
} }

View File

@@ -43,16 +43,5 @@ namespace OpenRA.Mods.RA.Activities
activity.Queue(NextActivity); activity.Queue(NextActivity);
NextActivity = activity; 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; return true;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromActor(proc); yield return Target.FromActor(proc);
} }

View File

@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Air
return this; return this;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromPos(Pos); yield return Target.FromPos(Pos);
} }

View File

@@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Air
return this; return this;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromPos(Dest); yield return Target.FromPos(Dest);
} }

View File

@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Move
return false; return false;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
yield return Target.FromPos(endLocation); yield return Target.FromPos(endLocation);
} }

View File

@@ -239,7 +239,7 @@ namespace OpenRA.Mods.RA.Move
return true; return true;
} }
public override IEnumerable<Target> GetTargetQueue( Actor self ) public override IEnumerable<Target> GetTargets( Actor self )
{ {
if( path != null ) if( path != null )
return Enumerable.Reverse(path).Select( c => Target.FromCell(c) ); 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 ); 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);
} }
} }