Introduces a floating, draggable, resizable Game Master console as the first of a planned series of GM/debug windows. Replaces the horizontal ops-strip card layout with proper data tables using TanStack Table v8. - GmWindow.vue: reusable draggable+resizable floating window base; snapshots offsetWidth/Height on drag start so resize is preserved - GmOpsWindow.vue: Ships / Stations / Factions tabs with global filter, column sorting, and drag-to-reorder columns (useColumnOrder composable) - gmStore.ts: Pinia store fed from ViewerWorldLifecycle.rebuildFactions with raw world arrays (ships, stations, factions) - Removes opsStripEl binding (was stored but never read by controller) - GM Console toggle button replaces the bottom ops strip Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
24 lines
654 B
TypeScript
24 lines
654 B
TypeScript
import { defineStore } from "pinia";
|
|
import type { ShipSnapshot } from "../../contractsShips";
|
|
import type { StationSnapshot } from "../../contractsInfrastructure";
|
|
import type { FactionSnapshot } from "../../contractsFactions";
|
|
|
|
export const useGmStore = defineStore("gm", {
|
|
state: () => ({
|
|
ships: [] as ShipSnapshot[],
|
|
stations: [] as StationSnapshot[],
|
|
factions: [] as FactionSnapshot[],
|
|
}),
|
|
actions: {
|
|
updateWorld(
|
|
ships: ShipSnapshot[],
|
|
stations: StationSnapshot[],
|
|
factions: FactionSnapshot[],
|
|
) {
|
|
this.ships = ships;
|
|
this.stations = stations;
|
|
this.factions = factions;
|
|
},
|
|
},
|
|
});
|