99 lines
3.6 KiB
C#
99 lines
3.6 KiB
C#
|
|
namespace SpaceGame.Api.Universe.Runtime;
|
|
|
|
public sealed class SystemRuntime
|
|
{
|
|
public required SolarSystemDefinition Definition { get; init; }
|
|
public required Vector3 Position { get; init; }
|
|
}
|
|
|
|
public sealed class AnchorRuntime
|
|
{
|
|
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; set; }
|
|
public string? ParentAnchorId { get; set; }
|
|
public string? OrbitReferenceId { get; set; }
|
|
public string? OccupyingStructureId { get; set; }
|
|
public required string SourceEntityKind { get; init; }
|
|
public required string SourceEntityId { get; init; }
|
|
public string LastDeltaSignature { get; set; } = string.Empty;
|
|
}
|
|
|
|
public sealed class ResourceNodeRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string AnchorId { 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 float LocalSpaceRadius { get; init; }
|
|
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 List<ResourceDepositRuntime> Deposits { get; } = [];
|
|
public string LastDeltaSignature { get; set; } = string.Empty;
|
|
}
|
|
|
|
public sealed class ResourceDepositRuntime
|
|
{
|
|
public required string Id { get; init; }
|
|
public required string NodeId { get; init; }
|
|
public required string AnchorId { get; init; }
|
|
public required Vector3 Position { get; set; }
|
|
public float OreRemaining { get; set; }
|
|
public float MaxOre { get; init; }
|
|
}
|
|
|
|
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? ParentAnchorId { 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 SpaceLayerKind SpaceLayer { get; set; } = SpaceLayerKind.LocalSpace;
|
|
public required string CurrentSystemId { get; set; }
|
|
public string? CurrentAnchorId { get; set; }
|
|
public Vector3? LocalPosition { get; set; }
|
|
public Vector3? SystemPosition { get; set; }
|
|
public MovementRegimeKind MovementRegime { get; set; } = MovementRegimeKind.LocalFlight;
|
|
public string? DestinationAnchorId { get; set; }
|
|
public ShipTransitRuntime? Transit { get; set; }
|
|
}
|
|
|
|
public sealed class ShipTransitRuntime
|
|
{
|
|
public required MovementRegimeKind Regime { get; init; }
|
|
public string? OriginAnchorId { get; init; }
|
|
public string? DestinationAnchorId { get; init; }
|
|
public DateTimeOffset? StartedAtUtc { get; set; }
|
|
public DateTimeOffset? ArrivalDueAtUtc { get; set; }
|
|
public float Progress { get; set; }
|
|
}
|