Fix scene selector init and start game on load
This commit is contained in:
16
main.js
16
main.js
@@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
sceneSelectEl.addEventListener("change", (e) => applyScene(e.target.value));
|
if (sceneSelectEl) {
|
||||||
populateSceneSelect();
|
sceneSelectEl.addEventListener("change", (e) => applyScene(e.target.value));
|
||||||
sceneSelectEl.value = currentScene.id;
|
}
|
||||||
highScore = loadHighScore();
|
highScore = loadHighScore();
|
||||||
buildLegend();
|
populateSceneSelect();
|
||||||
updateHud();
|
applyScene(currentScene.id);
|
||||||
startSpawner();
|
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user