Polish: Fix pixie visibility bug, add flight ready countdown, SVG cauldron redesign, and upgrade riddles

This commit is contained in:
Maxi
2026-09-22 20:14:32 +02:00
parent 5551c4e54f
commit cb8851b7a4
12 changed files with 368 additions and 231 deletions
+31 -7
View File
@@ -27,12 +27,36 @@
// Game Configuration
const TOTAL_RINGS_NEEDED = 12;
let gameRunning = true;
let gameRunning = false; // Does not start automatically!
let startTime = Date.now();
let score = 0;
let ringsCollected = 0;
let combo = 0;
window.startFlight = function() {
const overlay = document.getElementById('broomStartOverlay');
if (overlay) overlay.style.display = 'none';
rings.length = 0;
rings.push({ x: width + 60, y: height * 0.4, radius: 25, speed: 3.5, golden: false, collected: false, scale: 1, alpha: 1, pulse: 0 });
rings.push({ x: width + 290, y: height * 0.65, radius: 25, speed: 3.6, golden: true, collected: false, scale: 1, alpha: 1, pulse: 0 });
rings.push({ x: width + 530, y: height * 0.3, radius: 25, speed: 3.7, golden: false, collected: false, scale: 1, alpha: 1, pulse: 0 });
score = 0;
ringsCollected = 0;
combo = 0;
if (scoreVal) scoreVal.innerText = score;
if (ringsVal) ringsVal.innerText = `0/${TOTAL_RINGS_NEEDED}`;
if (comboVal) comboVal.innerText = '';
startTime = Date.now();
lastRingSpawn = Date.now();
gameRunning = true;
if (window.soundFX) window.soundFX.playWhoosh();
if (window.navigator && window.navigator.vibrate) window.navigator.vibrate(40);
};
// Player (Broomstick)
const player = {
x: 90,
@@ -206,13 +230,13 @@
btnBoost.addEventListener('pointerleave', endBoost);
}
// Pre-spawn 3 rings
rings.push({ x: width + 50, y: height * 0.4, radius: 25, speed: 3.5, golden: false, collected: false, scale: 1, alpha: 1, pulse: 0 });
rings.push({ x: width + 280, y: height * 0.65, radius: 25, speed: 3.6, golden: true, collected: false, scale: 1, alpha: 1, pulse: 0 });
rings.push({ x: width + 520, y: height * 0.3, radius: 25, speed: 3.7, golden: false, collected: false, scale: 1, alpha: 1, pulse: 0 });
function update() {
if (!gameRunning) return;
if (!gameRunning) {
// Idle gentle float before start
player.y = (height * 0.5) + Math.sin(Date.now() * 0.003) * 8;
player.angle = Math.sin(Date.now() * 0.003) * 0.04;
return;
}
const elapsedSec = Math.floor((Date.now() - startTime) / 1000);
if (timerVal) timerVal.innerText = elapsedSec + 's';