namespace SpaceGame.Simulation.Api.Simulation; public enum SpatialNodeKind { Star, Planet, Moon, LagrangePoint, Station, ResourceSite, } public enum WorkStatus { Pending, Active, Completed, } public enum OrderStatus { Queued, Accepted, Completed, } public static class SpaceLayerKinds { public const string UniverseSpace = "universe-space"; public const string GalaxySpace = "galaxy-space"; public const string SystemSpace = "system-space"; public const string LocalSpace = "local-space"; } public static class MovementRegimeKinds { public const string LocalFlight = "local-flight"; public const string Warp = "warp"; public const string StargateTransit = "stargate-transit"; public const string FtlTransit = "ftl-transit"; } public static class CommanderKind { public const string Faction = "faction"; public const string Station = "station"; public const string Ship = "ship"; public const string Fleet = "fleet"; public const string Sector = "sector"; public const string TaskGroup = "task-group"; } public static class ShipTaskKinds { public const string Idle = "idle"; public const string LocalMove = "local-move"; public const string WarpToNode = "warp-to-node"; public const string UseStargate = "use-stargate"; public const string UseFtl = "use-ftl"; public const string Dock = "dock"; public const string Undock = "undock"; public const string LoadCargo = "load-cargo"; public const string UnloadCargo = "unload-cargo"; public const string LoadWorkers = "load-workers"; public const string UnloadWorkers = "unload-workers"; public const string MineNode = "mine-node"; public const string HarvestGas = "harvest-gas"; public const string DeliverToStation = "deliver-to-station"; public const string ClaimLagrangePoint = "claim-lagrange-point"; public const string BuildConstructionSite = "build-construction-site"; public const string EscortTarget = "escort-target"; public const string AttackTarget = "attack-target"; public const string DefendBubble = "defend-bubble"; public const string Retreat = "retreat"; public const string HoldPosition = "hold-position"; } public static class ShipOrderKinds { public const string DirectMove = "direct-move"; public const string TravelToNode = "travel-to-node"; public const string DockAtStation = "dock-at-station"; public const string DeliverCargo = "deliver-cargo"; public const string BuildAtSite = "build-at-site"; public const string AttackTarget = "attack-target"; public const string HoldPosition = "hold-position"; } public static class ClaimStateKinds { public const string Placed = "placed"; public const string Activating = "activating"; public const string Active = "active"; public const string Destroyed = "destroyed"; } public static class ConstructionSiteStateKinds { public const string Planned = "planned"; public const string Active = "active"; public const string Paused = "paused"; public const string Completed = "completed"; public const string Destroyed = "destroyed"; } public static class MarketOrderKinds { public const string Buy = "buy"; public const string Sell = "sell"; } public static class MarketOrderStateKinds { public const string Open = "open"; public const string PartiallyFilled = "partially-filled"; public const string Filled = "filled"; public const string Cancelled = "cancelled"; } public static class SimulationEnumMappings { public static string ToContractValue(this SpatialNodeKind kind) => kind switch { SpatialNodeKind.Star => "star", SpatialNodeKind.Planet => "planet", SpatialNodeKind.Moon => "moon", SpatialNodeKind.LagrangePoint => "lagrange-point", SpatialNodeKind.Station => "station", SpatialNodeKind.ResourceSite => "resource-site", _ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null), }; public static string ToContractValue(this WorkStatus status) => status switch { WorkStatus.Pending => "pending", WorkStatus.Active => "active", WorkStatus.Completed => "completed", _ => throw new ArgumentOutOfRangeException(nameof(status), status, null), }; public static string ToContractValue(this OrderStatus status) => status switch { OrderStatus.Queued => "queued", OrderStatus.Accepted => "accepted", OrderStatus.Completed => "completed", _ => throw new ArgumentOutOfRangeException(nameof(status), status, null), }; }