Split viewer and simulation into separate apps

This commit is contained in:
2026-03-12 17:18:29 -04:00
parent 0a76c60ab1
commit 2fb90162ef
45 changed files with 1982 additions and 6600 deletions

View File

@@ -0,0 +1,85 @@
export interface WorldSnapshot {
label: string;
seed: number;
generatedAtUtc: string;
systems: SystemSnapshot[];
nodes: ResourceNodeSnapshot[];
stations: StationSnapshot[];
ships: ShipSnapshot[];
factions: FactionSnapshot[];
}
export interface Vector3Dto {
x: number;
y: number;
z: number;
}
export interface SystemSnapshot {
id: string;
label: string;
position: Vector3Dto;
starColor: string;
starSize: number;
planets: PlanetSnapshot[];
}
export interface PlanetSnapshot {
label: string;
orbitRadius: number;
size: number;
color: string;
hasRing: boolean;
}
export interface ResourceNodeSnapshot {
id: string;
systemId: string;
position: Vector3Dto;
oreRemaining: number;
maxOre: number;
itemId: string;
}
export interface StationSnapshot {
id: string;
label: string;
category: string;
systemId: string;
position: Vector3Dto;
color: string;
dockedShips: number;
oreStored: number;
refinedStock: number;
factionId: string;
}
export interface ShipSnapshot {
id: string;
label: string;
role: string;
shipClass: string;
systemId: string;
position: Vector3Dto;
state: string;
orderKind: string | null;
defaultBehaviorKind: string;
controllerTaskKind: string;
cargo: number;
cargoCapacity: number;
cargoItemId: string | null;
factionId: string;
health: number;
history: string[];
}
export interface FactionSnapshot {
id: string;
label: string;
color: string;
credits: number;
oreMined: number;
goodsProduced: number;
shipsBuilt: number;
shipsLost: number;
}