Commit 64be721
authored
Add save game editor (#12)
* WIP
* stuff
* WIP: Interactive 3D score cube for save editor
* Conditionally render ScoreCube to properly clean up WebGL canvas
Only mount the ScoreCube component when on the save-editor page.
This ensures onDestroy is called when navigating away, properly
disposing of the WebGL renderer and removing the canvas from DOM.
* Refactor: Consolidate formats and genericize WDB rendering
- Move parsing/serialization code to src/core/formats/:
- BinaryReader.js, BinaryWriter.js (shared utilities)
- SaveGameParser.js, SaveGameSerializer.js
- PlayersParser.js, PlayersSerializer.js
- Create formats/index.js as barrel export
- Extract generic WdbModelRenderer from ScoreCubeRenderer:
- WdbModelRenderer handles D3DRM geometry and paletted textures
- ScoreCubeRenderer extends it with score-specific logic
- Prepares for rendering other WDB models in the future
- Keep savegame/constants.js for domain-specific constants
- savegame/index.js remains as high-level API facade
* Save editor UI improvements
- Make save slot cards fixed width (85px) to prevent resizing with name length
- Make save slot cards more compact (smaller icons, padding, font)
- Remove Act selection from Character section
- Remove box-shadow from selected character to fix collapsed section bleed
* Improve score cube lighting to match in-game appearance
- Use flat, even lighting (high ambient + soft front light)
- Remove harsh directional shadows from edges
- Adjust camera position slightly for better framing
* Add spacing below score cube canvas
* Add spinning loader while loading score cube
* Update three.js to 0.182.0 and fix npm audit issues
- Update three.js from 0.170.0 to 0.182.0
- Fix npm audit vulnerabilities (devalue, lodash, svelte)
- Remaining vulns are in dev dependencies (vite, workbox-cli)
* Fix score cube overflow on mobile
Add max-width constraints to prevent the score cube from expanding
its container on narrow viewports while preserving its natural
200x200 size on desktop.
* Add save slot carousel and improve empty states
- Add reusable Carousel component with arrow navigation, drag-to-scroll,
and click-to-scroll-into-view functionality
- Replace static save slot list with horizontal carousel
- Add empty state with image when no save files exist
- Add prompt state when saves exist but none is selected
- Reset selected slot when entering Save Editor page
* Add February 2026 changelog entry for Save Editor
* Add missing January 2026 changelog entries for Safari and mobile fixes
* Remove unused mission images
* Refactor opfs.js to reduce code duplication
- Consolidate getFileHandle to use getOpfsRoot internally
- Add writeTextFile helper that uses writeBinaryFile
- Extract showToast helper for toast notifications
- Simplify saveConfig to use writeTextFile instead of duplicate worker
- Simplify fileExists and readBinaryFile to use getFileHandle
* Remove unused ScoreColorButton component
* Remove unused UI components1 parent 8f37456 commit 64be721
File tree
39 files changed
+3723
-162
lines changed- public
- src
- core
- formats
- rendering
- savegame
- lib
- config
- save-editor
39 files changed
+3723
-162
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
13 | 16 | | |
14 | 17 | | |
15 | 18 | | |
| |||
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
0 commit comments