Refine ship orders and viewer controls
This commit is contained in:
@@ -2834,7 +2834,7 @@ internal sealed class CommanderPlanningService
|
||||
TargetEntityId = objective.TargetEntityId,
|
||||
TargetSystemId = targetSystemId,
|
||||
TargetPosition = targetPosition,
|
||||
DestinationStationId = objective.BehaviorKind == DockAndWait ? objective.TargetEntityId : null,
|
||||
DestinationStationId = objective.BehaviorKind == DockAtStation ? objective.TargetEntityId : null,
|
||||
ItemId = objective.ItemId,
|
||||
WaitSeconds = 0f,
|
||||
Radius = MathF.Max(12f, objective.ReinforcementLevel * 18f),
|
||||
@@ -2874,13 +2874,13 @@ internal sealed class CommanderPlanningService
|
||||
|
||||
private static bool ReconcileAiOrders(ShipRuntime ship, ShipOrderRuntime? desiredOrder)
|
||||
{
|
||||
var changed = ship.OrderQueue.RemoveAll(order => order.Id.StartsWith("ai-order-", StringComparison.Ordinal) && (desiredOrder is null || !string.Equals(order.Id, desiredOrder.Id, StringComparison.Ordinal))) > 0;
|
||||
var changed = ship.OrderQueue.RemoveWhere(order => order.Id.StartsWith("ai-order-", StringComparison.Ordinal) && (desiredOrder is null || !string.Equals(order.Id, desiredOrder.Id, StringComparison.Ordinal))) > 0;
|
||||
if (desiredOrder is null)
|
||||
{
|
||||
return changed;
|
||||
}
|
||||
|
||||
var existing = ship.OrderQueue.FirstOrDefault(order => string.Equals(order.Id, desiredOrder.Id, StringComparison.Ordinal));
|
||||
var existing = ship.OrderQueue.FindById(desiredOrder.Id);
|
||||
if (existing is not null)
|
||||
{
|
||||
if (ShipOrdersEqual(existing, desiredOrder))
|
||||
@@ -2888,18 +2888,18 @@ internal sealed class CommanderPlanningService
|
||||
return changed;
|
||||
}
|
||||
|
||||
ship.OrderQueue.Remove(existing);
|
||||
changed = true;
|
||||
ship.OrderQueue.AddOrReplaceManagedOrder(desiredOrder);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ship.OrderQueue.Count >= MaxAiOrdersPerShip)
|
||||
{
|
||||
changed |= ship.OrderQueue.RemoveAll(order => order.Id.StartsWith("ai-order-", StringComparison.Ordinal)) > 0;
|
||||
changed |= ship.OrderQueue.RemoveWhere(order => order.Id.StartsWith("ai-order-", StringComparison.Ordinal)) > 0;
|
||||
}
|
||||
|
||||
if (ship.OrderQueue.Count < 8)
|
||||
if (ship.OrderQueue.Count < ShipOrderQueue.MaxOrders)
|
||||
{
|
||||
ship.OrderQueue.Add(desiredOrder);
|
||||
ship.OrderQueue.AddOrReplaceManagedOrder(desiredOrder);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user