{ "_comment": [ "Landing + surface videos, keyed by planets.png SHEET FRAME (same index the", "planet sprite uses — frames 0..2 are the terran worlds, 3..5 the gas", "giants; see data/planets.json → frames).", "", "`land` — the full-screen one-shot clip played when the ship lands.", "`surface` — the looping clip shown on the surface deck behind the action bar.", "`shop` — the looping clip the SHOP button swaps in over the surface", " clip (press SHOP again to swap back). null/missing = no shop", " on that world (a console note instead of a clip).", "`takeoff` — the full-screen one-shot clip played on TAKE OFF, before the", " flight world resumes. A null/missing entry takes off instantly.", "", "Entries are stubbed with the existing videos where a specific clip is", "missing: set `land`/`surface` to the real file name (in `videoBase`) when", "it is authored — no code change needed. Gas-giant surface clips don't", "exist yet, so they loop a terran surface clip as a placeholder.", "An entry may set `land`/`surface` to null to skip that stage entirely", "(land goes straight to the surface; a null surface shows the flat deck).", "A DOUBLE-CLICK (two quick presses) during the `land` or `takeoff`", "clips skips the rest of the clip — the deck / the flight world comes", "up immediately (no setting; the 350 ms window lives in SurfaceScene).", "Set `enabled` to false to disable landing entirely (REQUEST LANDING is", "greyed out in comms, same as a reputation ban)." ], "enabled": true, "videoBase": "assets/videos/", "volume": 1, "_hud_comment": "The upper-left HUD while the surface clip loops: the planet's NAME (Ethnocentric, the SAME shade the menu's game title uses — data/menu.json → colors.title — with a black stroke behind it so it holds over any clip) and, beneath it in the body face (Centauri), the planet TYPE + TETHER LEVEL (\"Terran World, Tether Level 1\"). Both decode in with the shared scramble (the name first). marginX/marginY = corner offsets (px); name/line = font sizes, letter spacing (px), stroke color/thickness, and line color (the theme's dim by default).", "hud": { "marginX": 24, "marginY": 20, "nameFontSize": 32, "nameLetterSpacing": 2, "nameStroke": "#000000", "nameStrokeWidth": 4, "lineGap": 10, "lineFontSize": 16, "lineLetterSpacing": 1, "lineColor": "#7d92c4", "lineStroke": "#000000", "lineStrokeWidth": 2 }, "videos": [ { "land": "terran-land-01.mp4", "surface": "terran-surface-01.mp4", "takeoff": "terran-takeoff-01.mp4", "shop": "terran-shop-01.mp4" }, { "land": "terran-land-02.mp4", "surface": "terran-surface-02.mp4", "takeoff": "terran-takeoff-02.mp4", "shop": "terran-shop-02.mp4" }, { "land": "terran-land-03.mp4", "surface": "terran-surface-03.mp4", "takeoff": "terran-takeoff-03.mp4", "shop": "terran-shop-03.mp4" }, { "land": "gasgiant-land-01.mp4", "surface": "gasgiant-surface-01.mp4", "takeoff": "gasgiant-takeoff-01.mp4", "shop": "gasgiant-shop-01.mp4" }, { "land": "gasgiant-land-02.mp4", "surface": "gasgiant-surface-02.mp4", "takeoff": "gasgiant-takeoff-02.mp4", "shop": "gasgiant-shop-02.mp4" }, { "land": "gasgiant-land-03.mp4", "surface": "gasgiant-surface-03.mp4", "takeoff": "gasgiant-takeoff-03.mp4", "shop": "gasgiant-shop-03.mp4" }, { "land": "rocky-land-01.mp4", "surface": "rocky-surface-01.mp4", "takeoff": "rocky-takeoff-01.mp4", "shop": "terran-shop-01.mp4" }, { "land": "rocky-land-02.mp4", "surface": "rocky-surface-02.mp4", "takeoff": "rocky-takeoff-02.mp4", "shop": "rocky-shop-02.mp4" }, { "land": "rocky-land-03.mp4", "surface": "rocky-surface-03.mp4", "takeoff": "rocky-takeoff-03.mp4", "shop": "rocky-shop-03.mp4" } ] }