var gameState; // 0 - Main menu 1 - Password screen 2 - Load level 3 - Playing 4 - Death 5 - Credits 6 - Instructions 7 - Loading data 8 - Level screen 9 - Victory screen 10 - Continue from checkpoint
var initGameState = false;
var deathMessage = "";
function InitGame()
{
initGameState = true;
gameState = 7;
}
function ChangeGameState(n)
{
initGameState = true;
gameState = n;
}
function UpdateGame()
{
var oldGameState = gameState;
switch(gameState)
{
case 0:
if(initGameState)
{
document.getElementById("startMenu").style.display = "block";
if(checkpoint.exists) document.getElementById("continueDiv").innerHTML = "Continue saved game
Erase saved game";
else document.getElementById("continueDiv").innerHTML = "Continue saved game
Erase saved game";
}
break;
case 1:
if(initGameState) document.getElementById("passwordMenu").style.display = "block";
break;
case 2:
if(level == numberOfLevels)
{
freeze = true;
ChangeGameState(9);
break;
}
freeze = true;
ClearObjects();
ClearCheckpoint();
levels[level].Init();
ChangeGameState(8);
break;
case 3:
if(initGameState) freeze = false;
break;
case 4:
if(initGameState)
{
document.getElementById("deathScreen").style.display = "block";
document.getElementById("deathTextDiv").innerHTML = deathMessage;
freeze = true;
}
break;
case 5:
if(initGameState) document.getElementById("creditsScreen").style.display = "block";
break;
case 6:
if(initGameState) document.getElementById("instructions").style.display = "block";
break;
case 7:
if(initGameState) StartLoadingData();
document.getElementById("loadingBar").style.width = "" + ((data.length / dataSrcs.length) * 200) + "px";
document.getElementById("loadingBar").innerHTML = "" + ((data.length / dataSrcs.length) * 100) + "% loaded";
if(data.length == dataSrcs.length)
{
CheckpointFromCookies();
document.getElementById("loadingScreen").style.display = "none";
ChangeGameState(0);
}
break;
case 8:
if(initGameState)
{
SaveCheckpoint(); // Initial checkpoint is the first frame after loading level
ChangeGameState(3);
}
break;
case 9:
if(initGameState)
{
document.getElementById("victoryScreen").style.display = "block";
}
break;
case 10:
ClearObjects();
LoadCheckpoint();
ChangeGameState(3);
break;
}
if(gameState != oldGameState) initGameState = true;
else initGameState = false;
preventDefault = (gameState == 3);
UpdateKeys();
}
function ClickNewGame()
{
level = 0;
document.getElementById("startMenu").style.display = "none";
ChangeGameState(2);
}
function ClickPassword()
{
document.getElementById("startMenu").style.display = "none";
ChangeGameState(1);
}
function ClickCredits()
{
document.getElementById("startMenu").style.display = "none";
ChangeGameState(5);
}
function ClickReturnCredits()
{
document.getElementById("creditsScreen").style.display = "none";
ChangeGameState(0);
}
function ClickReturn()
{
document.getElementById("passwordMenu").style.display = "none";
ChangeGameState(0);
}
function TryPassword()
{
var goodPassword = false;
var password = document.getElementById("passwordBox").value;
password = password.toUpperCase();
for(var i = 0; i < numberOfLevels; i++)
{
if(password == levels[i].password)
{
level = i;
goodPassword = true;
}
}
if(!goodPassword)
{
alert("Invalid password!");
document.getElementById("passwordBox").value = "";
}
else
{
document.getElementById("passwordMenu").style.display = "none";
ChangeGameState(2);
}
}
function ClickContinue()
{
document.getElementById("deathScreen").style.display = "none";
ChangeGameState(10);
}
function ClickInstructions()
{
document.getElementById("startMenu").style.display = "none";
ChangeGameState(6);
}
function ClickReturnInstructions()
{
document.getElementById("instructions").style.display = "none";
ChangeGameState(0);
}
function ClickReturnVictory()
{
document.getElementById("victoryScreen").style.display = "none";
ChangeGameState(0);
}
function ClickGiveUp()
{
document.getElementById("deathScreen").style.display = "none";
ChangeGameState(0);
}
function ClickContinueSavedGame()
{
document.getElementById("startMenu").style.display = "none";
ChangeGameState(10);
}
function ClickEraseSavedGame()
{
if(confirm("Are you sure?")) ClearCheckpoint();
ChangeGameState(0);
}