ui/phase-13: planet inspector — read-only
Plumbs the map → inspector pathway: a click on a planet selects it through the new SelectionStore, the sidebar Inspector tab swaps its empty-state copy for a per-kind read-only field set, and a mobile-only bottom-sheet mirrors the same content over the map. Field projection in api/game-state.ts now surfaces every documented planet field.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
import "@testing-library/jest-dom/vitest";
|
||||
import { describe, expect, test } from "vitest";
|
||||
|
||||
import type { GameReport } from "../src/api/game-state";
|
||||
import type { GameReport, ReportPlanet } from "../src/api/game-state";
|
||||
import { reportToWorld } from "../src/map/state-binding";
|
||||
|
||||
function makeReport(overrides: Partial<GameReport> = {}): GameReport {
|
||||
@@ -23,6 +23,29 @@ function makeReport(overrides: Partial<GameReport> = {}): GameReport {
|
||||
};
|
||||
}
|
||||
|
||||
// makePlanet fills the rich-projection fields the binding does not
|
||||
// inspect with `null`s so the binding-focused tests stay readable.
|
||||
function makePlanet(overrides: Partial<ReportPlanet>): ReportPlanet {
|
||||
return {
|
||||
number: 0,
|
||||
name: "",
|
||||
x: 0,
|
||||
y: 0,
|
||||
kind: "local",
|
||||
owner: null,
|
||||
size: null,
|
||||
resources: null,
|
||||
industryStockpile: null,
|
||||
materialsStockpile: null,
|
||||
industry: null,
|
||||
population: null,
|
||||
colonists: null,
|
||||
production: null,
|
||||
freeIndustry: null,
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
describe("reportToWorld", () => {
|
||||
test("uses report dimensions for the World", () => {
|
||||
const world = reportToWorld(makeReport({ mapWidth: 3200, mapHeight: 1600 }));
|
||||
@@ -34,10 +57,10 @@ describe("reportToWorld", () => {
|
||||
const world = reportToWorld(
|
||||
makeReport({
|
||||
planets: [
|
||||
{ number: 1, name: "Home", x: 100, y: 100, kind: "local", owner: null, size: 12, resources: 0.5 },
|
||||
{ number: 2, name: "Alpha", x: 200, y: 100, kind: "other", owner: "Federation", size: 8, resources: 0.3 },
|
||||
{ number: 3, name: "Rock", x: 100, y: 200, kind: "uninhabited", owner: null, size: 4, resources: 0.1 },
|
||||
{ number: 4, name: "", x: 200, y: 200, kind: "unidentified", owner: null, size: null, resources: null },
|
||||
makePlanet({ number: 1, name: "Home", x: 100, y: 100, kind: "local", size: 12, resources: 0.5 }),
|
||||
makePlanet({ number: 2, name: "Alpha", x: 200, y: 100, kind: "other", owner: "Federation", size: 8, resources: 0.3 }),
|
||||
makePlanet({ number: 3, name: "Rock", x: 100, y: 200, kind: "uninhabited", size: 4, resources: 0.1 }),
|
||||
makePlanet({ number: 4, name: "", x: 200, y: 200, kind: "unidentified" }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
@@ -51,7 +74,7 @@ describe("reportToWorld", () => {
|
||||
const world = reportToWorld(
|
||||
makeReport({
|
||||
planets: [
|
||||
{ number: 42, name: "Home", x: 123.5, y: 456.25, kind: "local", owner: null, size: 10, resources: 0.5 },
|
||||
makePlanet({ number: 42, name: "Home", x: 123.5, y: 456.25, kind: "local", size: 10, resources: 0.5 }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
@@ -68,10 +91,10 @@ describe("reportToWorld", () => {
|
||||
const world = reportToWorld(
|
||||
makeReport({
|
||||
planets: [
|
||||
{ number: 1, name: "L", x: 0, y: 0, kind: "local", owner: null, size: 1, resources: 0 },
|
||||
{ number: 2, name: "O", x: 1, y: 0, kind: "other", owner: "Foe", size: 1, resources: 0 },
|
||||
{ number: 3, name: "U", x: 2, y: 0, kind: "uninhabited", owner: null, size: 1, resources: 0 },
|
||||
{ number: 4, name: "?", x: 3, y: 0, kind: "unidentified", owner: null, size: null, resources: null },
|
||||
makePlanet({ number: 1, name: "L", kind: "local", size: 1, resources: 0 }),
|
||||
makePlanet({ number: 2, name: "O", x: 1, kind: "other", owner: "Foe", size: 1, resources: 0 }),
|
||||
makePlanet({ number: 3, name: "U", x: 2, kind: "uninhabited", size: 1, resources: 0 }),
|
||||
makePlanet({ number: 4, name: "?", x: 3, kind: "unidentified" }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
@@ -102,8 +125,8 @@ describe("reportToWorld", () => {
|
||||
const world = reportToWorld(
|
||||
makeReport({
|
||||
planets: [
|
||||
{ number: 1, name: "Home", x: 0, y: 0, kind: "local", owner: null, size: 1, resources: 0 },
|
||||
{ number: 2, name: "?", x: 0, y: 0, kind: "unidentified", owner: null, size: null, resources: null },
|
||||
makePlanet({ number: 1, name: "Home", kind: "local", size: 1, resources: 0 }),
|
||||
makePlanet({ number: 2, name: "?", kind: "unidentified" }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user