loop all orders only once

This commit is contained in:
Matthias Mailänder
2013-11-02 23:12:39 +01:00
parent 6b0238a6cc
commit 21b7d0eadb

View File

@@ -138,23 +138,28 @@ namespace OpenRA.Widgets
var pos = worldRenderer.Position(xy); var pos = worldRenderer.Position(xy);
var orders = world.OrderGenerator.Order(world, pos.ToCPos(), mi).ToArray(); var orders = world.OrderGenerator.Order(world, pos.ToCPos(), mi).ToArray();
orders.Do(o => world.IssueOrder(o));
world.PlayVoiceForOrders(orders); world.PlayVoiceForOrders(orders);
var flashed = false;
foreach (var o in orders) foreach (var o in orders)
{
if (!flashed)
{ {
if (o.TargetActor != null) if (o.TargetActor != null)
{ {
world.Add(new FlashTarget(o.TargetActor)); world.AddFrameEndTask(w => w.Add(new FlashTarget(o.TargetActor)));
break; flashed = true;
} }
else if (o.Subject != world.LocalPlayer.PlayerActor && o.TargetLocation != CPos.Zero) else if (o.Subject != world.LocalPlayer.PlayerActor && o.TargetLocation != CPos.Zero) // TODO: this filters building placement, but also suppport powers :(
{ {
world.Add(new MoveFlash(worldRenderer.Position(worldRenderer.Viewport.ViewToWorldPx(mi.Location)), world)); world.AddFrameEndTask(w => w.Add(new MoveFlash(worldRenderer.Position(worldRenderer.Viewport.ViewToWorldPx(mi.Location)), world)));
break; flashed = true;
} }
} }
world.IssueOrder(o);
}
} }
public override string GetCursor(int2 screenPos) public override string GetCursor(int2 screenPos)