namespace SpaceGame.Api.Universe.Runtime; public sealed class SystemRuntime { public required SolarSystemDefinition Definition { get; init; } public required Vector3 Position { get; init; } } public sealed class ResourceNodeRuntime { public required string Id { get; init; } public required string SystemId { get; init; } public required Vector3 Position { get; set; } public required string SourceKind { get; init; } public required string ItemId { get; init; } public string? CelestialId { get; set; } public float OrbitRadius { get; init; } public float OrbitPhase { get; init; } public float OrbitInclination { get; init; } public float OreRemaining { get; set; } public float MaxOre { get; init; } public string LastDeltaSignature { get; set; } = string.Empty; } public sealed class CelestialRuntime { public required string Id { get; init; } public required string SystemId { get; init; } public required SpatialNodeKind Kind { get; init; } public required Vector3 Position { get; set; } public float LocalSpaceRadius { get; init; } public string? ParentNodeId { get; set; } public string? OccupyingStructureId { get; set; } public string? OrbitReferenceId { get; set; } public string LastDeltaSignature { get; set; } = string.Empty; } public sealed class WreckRuntime { public required string Id { get; init; } public required string SourceKind { get; init; } public required string SourceEntityId { get; init; } public required string SystemId { get; set; } public required Vector3 Position { get; set; } public required string ItemId { get; set; } public float RemainingAmount { get; set; } public float MaxAmount { get; init; } } public sealed class ShipSpatialStateRuntime { public string SpaceLayer { get; set; } = SpaceLayerKinds.LocalSpace; public required string CurrentSystemId { get; set; } public string? CurrentCelestialId { get; set; } public Vector3? LocalPosition { get; set; } public Vector3? SystemPosition { get; set; } public string MovementRegime { get; set; } = MovementRegimeKinds.LocalFlight; public string? DestinationNodeId { get; set; } public ShipTransitRuntime? Transit { get; set; } } public sealed class ShipTransitRuntime { public required string Regime { get; init; } public string? OriginNodeId { get; init; } public string? DestinationNodeId { get; init; } public DateTimeOffset? StartedAtUtc { get; set; } public DateTimeOffset? ArrivalDueAtUtc { get; set; } public float Progress { get; set; } }