loop all orders only once
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user