From 429a36d3d1117845bd651e09abfc4be9b38f39c0 Mon Sep 17 00:00:00 2001 From: foxtacles Date: Sun, 5 Apr 2026 10:23:26 -0700 Subject: [PATCH] Add Rabbits extension to Extras tab (#31) Remove temporary poc.si hack and add Rabbits as a proper toggleable extension in the config UI, service worker caching, and config save/load. --- src/core/opfs.js | 5 ++++- src/core/service-worker.js | 6 ++++-- src/lib/ConfigurePage.svelte | 3 ++- src/lib/config/ExtrasTab.svelte | 4 ++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/core/opfs.js b/src/core/opfs.js index 363f777..3384b6b 100644 --- a/src/core/opfs.js +++ b/src/core/opfs.js @@ -219,9 +219,11 @@ function applyConfigToForm(form, config) { const hdMusic = elements["HD Music"]; const widescreenBgs = elements["Widescreen Backgrounds"]; const badEnding = elements["Extended Bad Ending FMV"]; + const rabbits = elements["Rabbits"]; if (hdMusic) hdMusic.checked = config[key].includes("hdmusic.si"); if (widescreenBgs) widescreenBgs.checked = config[key].includes("widescreen.si"); if (badEnding) badEnding.checked = config[key].includes("badend.si"); + if (rabbits) rabbits.checked = config[key].includes("rabbits.si"); continue; } @@ -338,7 +340,8 @@ export async function saveConfigFromDOM(multiplayer = null) { const hdMusic = document.getElementById('check-hd-music'); const widescreenBgs = document.getElementById('check-widescreen-bgs'); const badEnding = document.getElementById('check-ending'); - return getSiFilesForCache(hdMusic, widescreenBgs, badEnding); + const rabbits = document.getElementById('check-rabbits'); + return getSiFilesForCache(hdMusic, widescreenBgs, badEnding, rabbits); }; return saveConfig(form, getSiFiles, true, multiplayer); } diff --git a/src/core/service-worker.js b/src/core/service-worker.js index 9ec1959..cdaec3b 100644 --- a/src/core/service-worker.js +++ b/src/core/service-worker.js @@ -77,8 +77,9 @@ export function checkCacheStatus() { const hdMusic = document.getElementById('check-hd-music'); const widescreenBgs = document.getElementById('check-widescreen-bgs'); const badEnding = document.getElementById('check-ending'); + const rabbits = document.getElementById('check-rabbits'); - const siFiles = getSiFilesForCache(hdMusic, widescreenBgs, badEnding); + const siFiles = getSiFilesForCache(hdMusic, widescreenBgs, badEnding, rabbits); navigator.serviceWorker.controller.postMessage({ action: 'check_cache_status', @@ -88,11 +89,12 @@ export function checkCacheStatus() { }); } -export function getSiFilesForCache(hdMusic, widescreenBgs, badEnding) { +export function getSiFilesForCache(hdMusic, widescreenBgs, badEnding, rabbits) { const siFiles = []; if (hdMusic?.checked) siFiles.push('/LEGO/extra/hdmusic.si'); if (widescreenBgs?.checked) siFiles.push('/LEGO/extra/widescreen.si'); if (badEnding?.checked) siFiles.push('/LEGO/extra/badend.si'); + if (rabbits?.checked) siFiles.push('/LEGO/extra/rabbits.si'); return siFiles; } diff --git a/src/lib/ConfigurePage.svelte b/src/lib/ConfigurePage.svelte index dd0ba36..cc862ce 100644 --- a/src/lib/ConfigurePage.svelte +++ b/src/lib/ConfigurePage.svelte @@ -123,7 +123,8 @@ const hdMusic = document.getElementById('check-hd-music'); const widescreenBgs = document.getElementById('check-widescreen-bgs'); const badEnding = document.getElementById('check-ending'); - return getSiFilesForCache(hdMusic, widescreenBgs, badEnding); + const rabbits = document.getElementById('check-rabbits'); + return getSiFilesForCache(hdMusic, widescreenBgs, badEnding, rabbits); } function handleFormChange() { diff --git a/src/lib/config/ExtrasTab.svelte b/src/lib/config/ExtrasTab.svelte index 3c1474a..4412300 100644 --- a/src/lib/config/ExtrasTab.svelte +++ b/src/lib/config/ExtrasTab.svelte @@ -37,6 +37,10 @@ ?Plays the extended / "uncut" Bad Ending animation as found in beta versions of the game upon failing to catch the Brickster. +
+ + ?Adds two rabbits that hop around on the mountain top, visiting and nibbling on plants. +
?Switches to a third-person camera that follows your character around LEGO Island.