Fix scene selector init and start game on load

This commit is contained in:
Daddy32
2025-12-12 12:38:06 +01:00
parent ccba28d646
commit 6fc2cbbb59

14
main.js
View File

@@ -127,6 +127,7 @@
const paletteLegendEl = document.getElementById("palette-legend"); const paletteLegendEl = document.getElementById("palette-legend");
const scoreEl = document.getElementById("score"); const scoreEl = document.getElementById("score");
const highScoreEl = document.getElementById("high-score"); const highScoreEl = document.getElementById("high-score");
const sceneSelectEl = document.getElementById("scene-select");
const gameOverEl = document.getElementById("game-over"); const gameOverEl = document.getElementById("game-over");
const finalScoreEl = document.getElementById("final-score"); const finalScoreEl = document.getElementById("final-score");
const restartBtn = document.getElementById("restart-btn"); const restartBtn = document.getElementById("restart-btn");
@@ -166,7 +167,6 @@
boundaries = currentScene.createBodies(width, height); boundaries = currentScene.createBodies(width, height);
World.add(world, boundaries); World.add(world, boundaries);
}; };
rebuildSceneBodies();
const balls = []; const balls = [];
let spawnTimer = null; let spawnTimer = null;
@@ -196,6 +196,7 @@
}; };
const populateSceneSelect = () => { const populateSceneSelect = () => {
if (!sceneSelectEl) return;
sceneSelectEl.innerHTML = ""; sceneSelectEl.innerHTML = "";
scenes.forEach((scene) => { scenes.forEach((scene) => {
const opt = document.createElement("option"); const opt = document.createElement("option");
@@ -208,7 +209,7 @@
const applyScene = (sceneId) => { const applyScene = (sceneId) => {
const next = scenes.find((s) => s.id === sceneId) || scenes[0]; const next = scenes.find((s) => s.id === sceneId) || scenes[0];
currentScene = next; currentScene = next;
sceneSelectEl.value = next.id; if (sceneSelectEl) sceneSelectEl.value = next.id;
Object.assign(config, next.config); Object.assign(config, next.config);
engine.gravity.y = config.gravity; engine.gravity.y = config.gravity;
rebuildSceneBodies(); rebuildSceneBodies();
@@ -579,11 +580,10 @@
setPaused(!isPaused); setPaused(!isPaused);
} }
}); });
if (sceneSelectEl) {
sceneSelectEl.addEventListener("change", (e) => applyScene(e.target.value)); sceneSelectEl.addEventListener("change", (e) => applyScene(e.target.value));
populateSceneSelect(); }
sceneSelectEl.value = currentScene.id;
highScore = loadHighScore(); highScore = loadHighScore();
buildLegend(); populateSceneSelect();
updateHud(); applyScene(currentScene.id);
startSpawner();
})(); })();