- New shared audio voices: js/utils/Sfx.js (playSfxOn/stopSfxOn/sfxPlayingOn) and js/utils/Music.js (loop voice + shuffle playlist), both with v4 guard rails (cache.audio.has, stopByKey, isPlaying) so missing assets never throw. - data/music.json: menu loop, shuffled deep-space soundtrack for GameScene, and per-world surface loops keyed by planets.png frame; new mp3 assets in assets/music/. - data/sfx.json: add ui_hover/ui_click/ui_window/ui_close/mining_loop and a dedicated scan track; wire UI components (buttons, panels, popups, save vault) to the shared voice via scene.playSfx seam. - GameScene: start/stop the shuffle on create/shutdown, stop both soundtrack and mining hum on 'sleep' (landing launch+sleep) and resume on 'wake'; mining hum loops while beam is live and stops quietly on 'stopped'. - SurfaceScene: preload and loop the world's track from landing through takeoff; fix landing frame hand-off to pass sheetFrame instead of the texture Frame object. - MenuScene: preload SFX + menu music, start the menu hum in create, stop it on the 'shutdown' event (v4 never calls shutdown() on transition). - data/ship.json → stats: hullIntegrity/shields/cargoHold/mineralStorage, exposed as ship.stats for future combat/trading/mining systems. - Tests: dev/sfx.test.mjs and dev/music.test.mjs cover the shared voices, guards, and data contracts; ship-behavior and system-hud tests extended for base stats and the mining hum lifecycle. |
||
|---|---|---|
| .. | ||
| GameScene.js | ||
| MenuScene.js | ||
| SurfaceScene.js | ||