feat: improved visualisation and x4 data import
This commit is contained in:
@@ -33,6 +33,10 @@ export function describeSelectable(world: WorldState | undefined, item: Selectab
|
||||
if (item.kind === "planet") {
|
||||
return world.systems.get(item.systemId)?.planets[item.planetIndex]?.label ?? `${item.systemId}:${item.planetIndex}`;
|
||||
}
|
||||
if (item.kind === "moon") {
|
||||
const planet = world.systems.get(item.systemId)?.planets[item.planetIndex];
|
||||
return planet?.moons[item.moonIndex]?.label ?? `moon ${item.moonIndex + 1}`;
|
||||
}
|
||||
return world.systems.get(item.id)?.label ?? item.id;
|
||||
}
|
||||
|
||||
@@ -54,7 +58,7 @@ export function describeHoverLabel(world: WorldState | undefined, item: Selectab
|
||||
if (!system) {
|
||||
return item.id;
|
||||
}
|
||||
const starLabel = system.starCount > 1 ? `${system.starCount}× ${system.starKind}` : system.starKind;
|
||||
const starLabel = system.stars.length > 1 ? `${system.stars.length}× ${system.stars[0]?.kind}` : (system.stars[0]?.kind ?? "unknown");
|
||||
const planetCount = system.planets.length;
|
||||
const shipCount = [...world.ships.values()].filter((s) => s.systemId === item.id).length;
|
||||
const stationCount = [...world.stations.values()].filter((s) => s.systemId === item.id).length;
|
||||
@@ -81,6 +85,16 @@ export function describeHoverLabel(world: WorldState | undefined, item: Selectab
|
||||
return planet ? `${system?.label ?? item.systemId} / ${planet.label}` : `${item.systemId} / planet ${item.planetIndex + 1}`;
|
||||
}
|
||||
|
||||
if (item.kind === "moon") {
|
||||
const system = world.systems.get(item.systemId);
|
||||
const planet = system?.planets[item.planetIndex];
|
||||
const moon = planet?.moons[item.moonIndex];
|
||||
if (moon) {
|
||||
return `${system?.label ?? item.systemId} / ${planet?.label ?? `planet ${item.planetIndex + 1}`} / ${moon.label}`;
|
||||
}
|
||||
return `${item.systemId} / planet ${item.planetIndex + 1} / moon ${item.moonIndex + 1}`;
|
||||
}
|
||||
|
||||
if (item.kind === "node") {
|
||||
const node = world.nodes.get(item.id);
|
||||
if (!node) {
|
||||
@@ -168,6 +182,9 @@ export function resolveSelectableSystemId(world: WorldState | undefined, selecti
|
||||
if (selection.kind === "planet") {
|
||||
return selection.systemId;
|
||||
}
|
||||
if (selection.kind === "moon") {
|
||||
return selection.systemId;
|
||||
}
|
||||
return selection.id;
|
||||
}
|
||||
|
||||
@@ -271,7 +288,7 @@ export function renderSystemDetails(
|
||||
}
|
||||
}
|
||||
for (const planet of system.planets) {
|
||||
moonCount += planet.moonCount;
|
||||
moonCount += planet.moons.length;
|
||||
}
|
||||
|
||||
const followText = activeContext && cameraMode === "follow" && cameraTargetShipId
|
||||
@@ -280,7 +297,7 @@ export function renderSystemDetails(
|
||||
|
||||
return `
|
||||
<p>${system.id}${activeContext ? " · active system" : ""}</p>
|
||||
<p>${system.starKind} · ${system.starCount} star${system.starCount > 1 ? "s" : ""}</p>
|
||||
<p>${system.stars[0]?.kind ?? "unknown"} · ${system.stars.length} star${system.stars.length > 1 ? "s" : ""}</p>
|
||||
<p>Planets ${system.planets.length}<br>Moons ${moonCount}<br>Ships ${shipCount}<br>Stations ${stationCount}</p>
|
||||
<p>Celestials ${celestialCount}<br>Resource nodes ${nodeCount}</p>
|
||||
<p>Claims ${claimCount}<br>Construction sites ${constructionCount}</p>
|
||||
|
||||
Reference in New Issue
Block a user