diff --git a/wwwroot/app.js b/wwwroot/app.js index 06a6121..34c42ac 100644 --- a/wwwroot/app.js +++ b/wwwroot/app.js @@ -28,7 +28,7 @@ import { } from "./js/data.js"; initI18n(); -setupBackgroundPan({ maxOffsetPx: 30, ease: 0.08, scaleFactor: 1.12 }); +setupBackgroundPan({ maxOffsetPx: 5, ease: 0.2, scaleFactor: 1.02 }); function setupHandlers() { const toggleAuth = $("auth-toggle"); diff --git a/wwwroot/js/effects.js b/wwwroot/js/effects.js index a14de19..3e53ab4 100644 --- a/wwwroot/js/effects.js +++ b/wwwroot/js/effects.js @@ -126,12 +126,12 @@ export function triggerCelebration(button) { function spawnConfetti(x, y, count) { for (let i = 0; i < count; i++) { fxParticles.push({ - x, - y, + x: x + (Math.random() - 0.5) * 20, + y: y + (Math.random() - 0.5) * 200, vx: (Math.random() - 0.5) * 6, vy: Math.random() * -6 - 2, size: 6 + Math.random() * 4, - life: 60 + Math.random() * 20, + life: 600 + Math.random() * 200, color: randomColor(), type: "confetti", wobble: Math.random() * Math.PI * 2, @@ -142,14 +142,14 @@ function spawnConfetti(x, y, count) { function spawnFirework(x, y, count) { for (let i = 0; i < count; i++) { const angle = (Math.PI * 2 * i) / count + Math.random() * 0.3; - const speed = 3 + Math.random() * 3; + const speed = (3 + Math.random() * 3) * 0.1; fxParticles.push({ x, y, vx: Math.cos(angle) * speed, - vy: Math.sin(angle) * speed, + vy: Math.sin(angle) * speed - 3, size: 4 + Math.random() * 3, - life: 50 + Math.random() * 20, + life: 500 + Math.random() * 200, color: randomColor(), type: "spark", }); @@ -162,14 +162,14 @@ function fxStep() { fxParticles = fxParticles.filter((p) => p.life > 0); for (const p of fxParticles) { if (p.type === "confetti") { - p.vy += 0.18; - p.vx *= 0.99; + p.vy += 0.05; + p.vx *= 0.999; p.wobble += 0.2; p.x += p.vx + Math.cos(p.wobble) * 0.8; p.y += p.vy; } else { - p.vy += 0.08; - p.vx *= 0.995; + p.vy += 0.02; + p.vx *= 0.9995; p.x += p.vx; p.y += p.vy; }