50 lines
2.1 KiB
C#
50 lines
2.1 KiB
C#
namespace SpaceGame.Simulation.Api.Simulation;
|
|
|
|
public sealed class StationRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string SystemId { get; init; }
|
|
public required string Label { get; set; }
|
|
public string Category { get; set; } = "station";
|
|
public string Color { get; set; } = "#8df0d2";
|
|
public required Vector3 Position { get; set; }
|
|
public float Radius { get; set; } = 24f;
|
|
public required string FactionId { get; init; }
|
|
public string? NodeId { get; set; }
|
|
public string? BubbleId { get; set; }
|
|
public string? AnchorNodeId { get; set; }
|
|
public string? CommanderId { get; set; }
|
|
public string? PolicySetId { get; set; }
|
|
public List<StationModuleRuntime> Modules { get; } = [];
|
|
public IEnumerable<string> InstalledModules => Modules.Select((module) => module.ModuleId);
|
|
public Dictionary<string, float> Inventory { get; } = new(StringComparer.Ordinal);
|
|
public Dictionary<string, float> ProductionLaneTimers { get; } = new(StringComparer.Ordinal);
|
|
public Dictionary<int, string> DockingPadAssignments { get; } = new();
|
|
public HashSet<string> MarketOrderIds { get; } = new(StringComparer.Ordinal);
|
|
public float Population { get; set; }
|
|
public float PopulationCapacity { get; set; }
|
|
public float WorkforceRequired { get; set; }
|
|
public float WorkforceEffectiveRatio { get; set; } = 0.1f;
|
|
public float PopulationGrowthProgress { get; set; }
|
|
public float ShipProductionProgressSeconds { get; set; }
|
|
public HashSet<string> DockedShipIds { get; } = [];
|
|
public ModuleConstructionRuntime? ActiveConstruction { get; set; }
|
|
public string LastDeltaSignature { get; set; } = string.Empty;
|
|
}
|
|
|
|
public sealed class StationModuleRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string ModuleId { get; init; }
|
|
public float Health { get; set; }
|
|
public float MaxHealth { get; set; }
|
|
}
|
|
|
|
public sealed class ModuleConstructionRuntime
|
|
{
|
|
public required string ModuleId { get; init; }
|
|
public float ProgressSeconds { get; set; }
|
|
public float RequiredSeconds { get; init; }
|
|
public string AssignedConstructorShipId { get; set; } = string.Empty;
|
|
}
|