72 lines
2.7 KiB
C#
72 lines
2.7 KiB
C#
namespace SpaceGame.Simulation.Api.Simulation;
|
|
|
|
public sealed class FactionRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Label { get; init; }
|
|
public required string Color { get; init; }
|
|
public float Credits { get; set; }
|
|
public float PopulationTotal { get; set; }
|
|
public float OreMined { get; set; }
|
|
public float GoodsProduced { get; set; }
|
|
public int ShipsBuilt { get; set; }
|
|
public int ShipsLost { get; set; }
|
|
public HashSet<string> CommanderIds { get; } = new(StringComparer.Ordinal);
|
|
public string? DefaultPolicySetId { get; set; }
|
|
public string LastDeltaSignature { get; set; } = string.Empty;
|
|
}
|
|
|
|
public sealed class CommanderRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string Kind { get; set; }
|
|
public required string FactionId { get; init; }
|
|
public string? ParentCommanderId { get; set; }
|
|
public string? ControlledEntityId { get; set; }
|
|
public string? PolicySetId { get; set; }
|
|
public string? Doctrine { get; set; }
|
|
public List<string> Goals { get; } = [];
|
|
public HashSet<string> ActiveDirectives { get; } = new(StringComparer.Ordinal);
|
|
public string? ActiveGoalName { get; set; }
|
|
public string? ActiveActionName { get; set; }
|
|
public float ReplanTimer { get; set; }
|
|
public bool NeedsReplan { get; set; } = true;
|
|
public CommanderBehaviorRuntime? ActiveBehavior { get; set; }
|
|
public CommanderOrderRuntime? ActiveOrder { get; set; }
|
|
public CommanderTaskRuntime? ActiveTask { get; set; }
|
|
public HashSet<string> SubordinateCommanderIds { get; } = new(StringComparer.Ordinal);
|
|
public bool IsAlive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class CommanderBehaviorRuntime
|
|
{
|
|
public required string Kind { get; set; }
|
|
public string? Phase { get; set; }
|
|
public string? NodeId { get; set; }
|
|
public string? StationId { get; set; }
|
|
public string? ModuleId { get; set; }
|
|
public string? AreaSystemId { get; set; }
|
|
public int PatrolIndex { get; set; }
|
|
}
|
|
|
|
public sealed class CommanderOrderRuntime
|
|
{
|
|
public required string Kind { get; init; }
|
|
public OrderStatus Status { get; set; } = OrderStatus.Accepted;
|
|
public string? TargetEntityId { get; set; }
|
|
public string? DestinationNodeId { get; set; }
|
|
public required string DestinationSystemId { get; init; }
|
|
public required Vector3 DestinationPosition { get; init; }
|
|
}
|
|
|
|
public sealed class CommanderTaskRuntime
|
|
{
|
|
public required string Kind { get; set; }
|
|
public WorkStatus Status { get; set; } = WorkStatus.Pending;
|
|
public string? TargetEntityId { get; set; }
|
|
public string? TargetSystemId { get; set; }
|
|
public string? TargetNodeId { get; set; }
|
|
public Vector3? TargetPosition { get; set; }
|
|
public float Threshold { get; set; }
|
|
}
|