Pass world directly to UnitOrders.ResolveOrder

Avoids order.Subject.World look-ups.

Also removes validOrders parameter,
we can get that directly from World now.
This commit is contained in:
reaperrr
2020-09-15 10:42:50 +02:00
committed by Paul Chote
parent 904a5f60d1
commit a4a409f39b

View File

@@ -336,22 +336,22 @@ namespace OpenRA.Network
break; break;
if (order.GroupedActors == null) if (order.GroupedActors == null)
ResolveOrder(order, world.OrderValidators, orderManager, clientId); ResolveOrder(order, world, orderManager, clientId);
else else
foreach (var subject in order.GroupedActors) foreach (var subject in order.GroupedActors)
ResolveOrder(Order.FromGroupedOrder(order, subject), world.OrderValidators, orderManager, clientId); ResolveOrder(Order.FromGroupedOrder(order, subject), world, orderManager, clientId);
break; break;
} }
} }
} }
static void ResolveOrder(Order order, IEnumerable<IValidateOrder> validateOrders, OrderManager orderManager, int clientId) static void ResolveOrder(Order order, World world, OrderManager orderManager, int clientId)
{ {
if (order.Subject == null || order.Subject.IsDead) if (order.Subject == null || order.Subject.IsDead)
return; return;
if (validateOrders.All(vo => vo.OrderValidation(orderManager, order.Subject.World, clientId, order))) if (world.OrderValidators.All(vo => vo.OrderValidation(orderManager, world, clientId, order)))
foreach (var t in order.Subject.TraitsImplementing<IResolveOrder>()) foreach (var t in order.Subject.TraitsImplementing<IResolveOrder>())
t.ResolveOrder(order.Subject, order); t.ResolveOrder(order.Subject, order);
} }