59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
function hideAll(){
|
|
["screen-title","screen-game","screen-gameover","screen-transition","screen-victory"].forEach(function(id){$(id).style.display="none"});
|
|
if(animId){cancelAnimationFrame(animId);animId=null;}
|
|
}
|
|
|
|
function show(n){
|
|
hideAll();curScreen=n;$("screen-"+n).style.display="flex";
|
|
if(n==="title")runTitle();
|
|
if(n==="victory")runVic();
|
|
if(n==="game")startGame();
|
|
}
|
|
|
|
function runTitle(){
|
|
titleHue=0;
|
|
(function t(){if(curScreen!=="title")return;titleHue=(titleHue+1)%360;
|
|
var e=$("title-glow");if(e)e.style.background="radial-gradient(circle at 50% 30%,hsla("+titleHue+",40%,30%,0.15) 0%,transparent 60%)";
|
|
animId=requestAnimationFrame(t)})();
|
|
}
|
|
|
|
function runVic(){
|
|
vicF=0;
|
|
(function t(){if(curScreen!=="victory")return;vicF+=0.05;
|
|
var y=Math.sin(vicF)*10;
|
|
var g=$("v-guru"),s=$("v-stone2");
|
|
if(g)g.style.transform="translateY("+y+"px)";
|
|
if(s)s.style.transform="translateY("+Math.sin(vicF+1)*6+"px)";
|
|
animId=requestAnimationFrame(t)})();
|
|
}
|
|
|
|
function showTrans(l){
|
|
var c=LEVELS[l];
|
|
$("tr-ln").textContent="\u201E"+c.name+"\u201C bezwungen";
|
|
$("tr-t").textContent=c.title;
|
|
$("tr-btn").textContent=l<2?"N\u00E4chstes Level":"Zum Finale";
|
|
$("tr-btn").onclick=function(){if(l>=2)show("victory");else{curLvl=l+1;show("game");}};
|
|
show("transition");
|
|
}
|
|
|
|
function showGO(reason){
|
|
sfxLose();
|
|
$("go-r").textContent=reason;
|
|
$("go-retry").onclick=function(){show("game")};
|
|
$("go-rst").onclick=function(){curLvl=0;show("game")};
|
|
$("go-quit").onclick=function(){show("title")};
|
|
show("gameover");
|
|
}
|
|
|
|
function startGame(){
|
|
initGame(curLvl); frame=0; showTut=true;
|
|
var c=LEVELS[curLvl];
|
|
$("tut-h").textContent="Level "+(curLvl+1)+": "+c.name;
|
|
$("tut-sc").textContent=c.stones;
|
|
$("tut-ov").style.display="flex";
|
|
$("tut-ov").onclick=function(){$("tut-ov").style.display="none";showTut=false;ea()};
|
|
updateHUD(); gameLoop();
|
|
}
|