orbit/data/map.json

160 lines
7.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"_comment": "MAP — the deck's MAP button (to the right of SHIP): the full-screen cartography console, js/ui/MapWindow.js (depth 80, the ResearchWindow idiom). LEFT = the cartography feed (assets/videos/map.mp4, a muted 2:3 loop, the same recipe as the research archive feed). RIGHT = tabs on top (CURRENT SYSTEM is live; GALAXY is a reserved socket — pressing it toasts the lock line), the SYSTEM CHART in the middle, and the SYSTEM readout on the bottom (name + discovery % + resource %). THE CHART (the magic, drawn to a canvas texture): the whole solar system — every object's extent (planets, stations, gates AND asteroid clusters, discovered or not) + `bounds.padding` px of padding on each edge — fitted to the plate. Only DISCOVERED objects are drawn (planets / stations / gates / rock fields, small representations). The TETHER RANGE is drawn as the union boundary (Tether.visibleArcs) with a soft zone glow inside, and everything OUTSIDE the tether union is grayed out (a fog-of-war dim pass with feathered rim) — so the chart reads as 'here is what you have charted, and here is the room to expand'. A live SHIP marker + hover tooltips + click-to-autopilot (GameScene.autopilotTo) sit on top. All colors/motion are steered here.",
"enabled": true,
"title": "STELLAR CARTOGRAPHY",
"meta": "NAV DATA // LIVE FEED",
"video": {
"_comment": "The cartography feed (like research.video): `file` is the clip under assets/videos/ (or a full relative path / URL). Muted, looping, 2:3 portrait (map.mp4 is 544×800). A missing file leaves the NO SIGNAL plate up — the console still works.",
"file": "map.mp4",
"aspect": [
2,
3
]
},
"tabs": {
"_comment": "The two sockets above the chart (top right). `currentSystem` is the live tab (default). `galaxy` is reserved — `standby: true` renders it dimmed with the standbyTag, and a press fires the scene's onLocked (a console toast) instead of switching.",
"currentSystem": {
"id": "currentSystem",
"label": "Current System",
"accent": "#00e5ff"
},
"galaxy": {
"id": "galaxy",
"label": "Galaxy",
"accent": "#ffc94d",
"standby": true,
"standbyTag": "OFFLINE"
}
},
"galaxyLockedToast": "GALAXY MAP OFFLINE — SECTOR DATA NOT ACQUIRED",
"bounds": {
"_comment": "The chart's frame: the furthest X/Y extents of EVERY object in the system (planets, stations, gates, asteroid clusters — discovered or not) plus this much padding, px, on each edge (the design rule: ~1024).",
"padding": 1024
},
"chart": {
"_comment": "The plate's rendering (the canvas texture is redrawn on open / on discovery / on tether changes). colors follow theme.json (neon cyan range, amber alerts). grid.spacing = the world-px step of the adaptive grid (snapped to 1/2/5×10^k). glow = the soft light pooled inside each tether zone (fraction of the zone radius the gradient spans, and its strength). labels = the small name tags under NAV objects.",
"colors": {
"bg": "#040914",
"bgGlow": "#0a2238",
"star": "#9fd8ff",
"grid": "#1b3a5a",
"gridAlpha": 0.28,
"ink": "#eaf6ff",
"dim": "#7d92c4",
"faint": "#3d4c74",
"tether": "#00e5ff",
"tetherGlow": "#00e5ff",
"neon2": "#ff2d6f",
"amber": "#ffc94d",
"fog": "#111c33",
"fogAlpha": 0.55
},
"grid": {
"spacing": 512,
"alpha": 0.28
},
"glow": {
"span": 0.92,
"alpha": 0.22
},
"tetherLine": {
"dash": 7,
"gap": 5,
"width": 2,
"coreWidth": 1,
"ghost": 2.5
},
"labels": {
"enabled": true,
"size": 10,
"letterSpacing": 1.2
},
"planetMin": 4,
"planetMax": 16,
"starMin": 7,
"starMax": 30,
"vignette": 0.34
},
"stats": {
"_comment": "The bottom-right SYSTEM readout. discovery = the share of the system's NAV objects (planets + space stations + jump gates — the central body is the chart's anchor, not a count) the player has found; resources = the share of asteroid fields found (the only resource kind for now). Both render as segmented bars (one segment per object) + a percent.",
"discoveryLabel": "SYSTEM DISCOVERY",
"discoveryMeta": "PLANETS · STATIONS · JUMP GATES",
"resourcesLabel": "SYSTEM RESOURCES",
"resourcesMeta": "ASTEROID FIELDS",
"noResources": "NO RESOURCE FIELDS CHARTED"
},
"legend": {
"_comment": "The glyph key under the stats (the chart's visual language).",
"items": [
{
"glyph": "planet",
"label": "WORLD"
},
{
"glyph": "station",
"label": "STATION"
},
{
"glyph": "gate",
"label": "JUMP GATE"
},
{
"glyph": "rock",
"label": "ROCKS"
},
{
"glyph": "tether",
"label": "TETHER RANGE"
},
{
"glyph": "ship",
"label": "SHIP"
}
]
},
"sweep": {
"_comment": "The scan band crawling across the chart (the CRT pass of light).",
"enabled": true,
"everyMs": [
5200,
9800
],
"durationMs": 1500
},
"glitch": {
"_comment": "Ambient glitch bursts over the window (slice bars + title RGB split, the ResearchWindow model).",
"enabled": true,
"intervalMs": [
5000,
11000
],
"durationMs": [
200,
420
]
},
"hover": {
"_comment": "Plate hover: the object under the cursor gets a highlight ring + tooltip. radiusSlop = extra screen-px hit slop (tiny map objects need room).",
"enabled": true,
"radiusSlop": 9
},
"zoom": {
"_comment": "Wheel zoom + drag pan over the chart plate (Phaser 4's input plugin delivers `wheel` and pointer events to the plate's image, whose hit area IS the plate — so they only fire over the plate; Phaser also stops the page scroll on the canvas by default). Zooming re-renders the chart at the new scale about the cursor (the painter's grid/labels adapt, so it stays crisp) — the visible box is the full frame ÷ z, clamped inside it. A press that moves past 5px pans the zoomed view (drag); release on a still press is the click (select / double-tap reset). Each system remembers its last view; double-tap on empty plate resets to 1×. sensitivity = exponential zoom per px of wheel delta (0.0022 ≈ 2.2× per 500 px of scroll).",
"enabled": true,
"zMin": 1,
"zMax": 8,
"sensitivity": 0.0022
},
"clickToast": {
"_comment": "Plate interaction copy.",
"coursePlotted": "COURSE PLOTTED — {name}",
"noCourse": "NO NAV LOCK — OBJECT NOT CHARTED"
},
"confirm": {
"_comment": "The ENGAGE AUTOPILOT dialog (js/ui/ConfirmOverlay.js, the save pop-up's confirm) shown over the plate before a click engages autopilot — autopilot is a commitment, so it's confirmed. CONFIRM (ENGAGE) plots the course AND closes the console; CANCEL, a scrim click, or ESC leaves the map exactly as it was (the plate + chrome are inert while it's up). width/height/labels are the console language; the destination + distance body is computed live from the pick.",
"width": 440,
"height": 168,
"title": "ENGAGE AUTOPILOT",
"label": "ENGAGE"
}
}