Commit Graph

98 Commits

Author SHA1 Message Date
Christian Semmler
36a6e0fde9
Feature/island sky color editor (#13)
* Add Island tab with sky color editor

- Add parseVariables() to SaveGameParser to extract variable names, values, and offsets
- Add updateVariable() to SaveGameSerializer for modifying variable values
- Add colorUtils.js with LEGO Island's custom HSV-to-RGB algorithm
- Add SkyColorEditor component with H/S/V sliders and color preview
- Add Island tab to SaveEditorPage with Sky Color section
- Include reset to default button when values differ from default (56/54/68)

* Remove tooltip

* Add light position editor to Island tab

Allows users to select one of 6 sun positions using visual globe
image selectors. Includes converted globe images (BMP to WebP).
2026-02-01 23:42:40 +01:00
Christian Semmler
64be72194e
Add save game editor (#12)
Some checks are pending
Build / build (push) Waiting to run
* 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 components
2026-02-01 00:28:16 +01:00
Christian Semmler
8f374561e5
Add prepare:assets script for game asset setup (#11)
Some checks are pending
Build / build (push) Waiting to run
Add a Node.js script that sets up LEGO Island game assets via symlinks:
- Accepts source path interactively or via --path/-p flag
- Case-insensitive file matching for cross-platform compatibility
- Validates all required files before making changes
- Supports optional extra/ and textures/ folders
- Includes --force/-f flag to skip deletion confirmation

Updates README with new setup step and script documentation.
2026-01-31 20:14:44 +01:00
Christian Semmler
15169c3ec5
Fix transition animation in config section
Some checks are pending
Build / build (push) Waiting to run
2026-01-30 16:32:51 -08:00
Christian Semmler
ff379338f9
Fix issue on Safari: audio not playing on first toggle 2026-01-30 15:01:30 -08:00
Christian Semmler
b5389b2685
Fix tooltip CSS issues on Config page
Some checks failed
Build / build (push) Has been cancelled
- Allow tooltips to overflow container when section is open
- Expand touch target for tooltip triggers on mobile devices

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 16:31:45 -08:00
Christian Semmler
5ce1b1ed69
Merge pull request #10 from isledecomp/svelte
Migrate frontend to Svelte 5
2026-01-25 10:08:08 -08:00
Christian Semmler
1703e0ec73
Improve development mode experience
- Show "DEVELOPMENT MODE" in footer instead of timestamp
- Disable offline install/uninstall when service worker unavailable
- Set __BUILD_TIME__ to null in dev mode for conditional rendering
2026-01-11 21:11:32 -07:00
Christian Semmler
adfea5e91b
Skip service worker in dev mode and copy isle.js/isle.wasm on build
- Skip service worker registration when running in dev mode to avoid 404 errors
- Add isle.js and isle.wasm copy step to production build
- Add build:ci script for CI builds without required wasm files
2026-01-11 20:59:55 -07:00
Christian Semmler
894546a468
Test CI 2026-01-11 19:51:08 -07:00
Christian Semmler
abe2b70871
Test CI 2026-01-11 19:50:20 -07:00
Christian Semmler
6a60a829ce
Add GitHub Actions workflow to verify warning-free builds 2026-01-11 19:43:20 -07:00
Christian Semmler
bb1deef26a Add complete animation list and fix select styling in debug panel 2026-01-11 19:28:45 -07:00
Christian Semmler
c4b1b0d226
Merge branch 'svelte' of github.com:isledecomp/isle.pizza into svelte 2026-01-11 19:16:55 -07:00
Christian Semmler
b47748f2ab
Update README.md 2026-01-12 03:16:30 +01:00
Christian Semmler
92d90de61b
Rename serviceWorker.js to service-worker.js 2026-01-11 19:15:18 -07:00
Christian Semmler
32a16b5da1
Rename project to isle.pizza 2026-01-11 19:12:23 -07:00
Christian Semmler
804a87e687
Migrate frontend to Svelte 5
- Replace vanilla JS with Svelte 5 components
- Add Vite build system with Terser optimization
- Reorganize assets into src/ and public/ directories
- Update README with setup instructions
2026-01-11 19:10:16 -07:00
Christian Semmler
4a55a478e2
Fixes 2026-01-04 16:57:57 -07:00
Christian Semmler
479edf1111
Fix tooltips on mobile 2026-01-04 16:43:13 -07:00
Christian Semmler
02ce28d00b
Address Safari issues 2026-01-04 16:18:52 -07:00
Christian Semmler
17eefb0be6
Improvements 2026-01-04 16:05:21 -07:00
Christian Semmler
96097a01bc
Update changelog 2026-01-04 15:40:51 -07:00
Christian Semmler
bd2c31bd79
Updates 2026-01-04 15:36:53 -07:00
Christian Semmler
e96ba299b7
Update config page 2026-01-04 15:31:19 -07:00
Christian Semmler
57a8cb17d9
Add Cancel animation 2026-01-04 14:40:33 -07:00
Christian Semmler
67a6548bba
Update sections 2026-01-04 14:28:36 -07:00
Christian Semmler
75a536692c
Add System tab 2026-01-04 14:12:26 -07:00
Christian Semmler
41e555ae17
Update free stuff page 2026-01-04 10:50:57 -07:00
Christian Semmler
4444ed09dc
Add congrats image to Free Stuff 2026-01-04 10:47:05 -07:00
Christian Semmler
3a7005c09c
Add voices section 2026-01-04 10:43:02 -07:00
Christian Semmler
10d1bf2376
Improve ReadMe page 2026-01-04 09:45:50 -07:00
Christian Semmler
c978263a2d
Update sw.js 2026-01-03 15:40:30 -07:00
Christian Semmler
efba2da6c9
Fix font size 2026-01-03 15:21:56 -07:00
Christian Semmler
054d84439c
Update index.html 2026-01-03 15:11:31 -07:00
Christian Semmler
369359daf3
Add update popup 2026-01-03 15:11:14 -07:00
Christian Semmler
d6588e2a23
Bugfix: invalid cache status in incognito windows 2026-01-03 14:50:54 -07:00
Christian Semmler
572219f703
Add debug menu 2026-01-01 09:34:47 -07:00
Christian Semmler
d3e395a63d
Add changelog section 2025-12-31 14:31:55 -07:00
Christian Semmler
1268c376b1
Add active in background option 2025-12-31 14:10:59 -07:00
Christian Semmler
d42e873eda
Update default Aniso setting 2025-12-27 08:24:55 -07:00
Christian Semmler
ddf4939a3c
Update index.html 2025-12-25 18:23:18 -07:00
Christian Semmler
09220a19e1
Update index.html 2025-12-25 16:16:56 -07:00
Christian Semmler
286ee5a7dd
Update index/sw 2025-12-12 22:03:34 -07:00
3c2bd8a341
add WASD input option (#9) 2025-12-12 21:36:19 -07:00
Christian Semmler
fe7323eb1d
Add footer with timestamp 2025-09-04 14:59:09 -07:00
Christian Semmler
68a2c30044
Update index.html 2025-09-04 09:28:56 -07:00
Christian Semmler
b23f3e4e26
Update sw.js 2025-09-01 11:52:30 -07:00
Christian Semmler
77bc2cf3ff
Fix duplicate IDs 2025-08-22 14:00:29 -07:00
Christian Semmler
d0b4513d0f
Update tooltip 2025-08-20 17:03:49 -07:00