data = { name: "You", gold: 0, mine: 0, miners: 0, level: 3, hp: 5, maxHP: 5, xp: 0, power: 3, bonusPower: 0, icon : "💪" } function sendRequest(url, params, callback, isFile) { var xhr = new XMLHttpRequest(); xhr.open("POST", url); if(!isFile) xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == "200") { var data = ""; if(xhr.responseText) data = JSON.parse(xhr.responseText); if(data.info) showInfo(data.info); if(data.error) { showError(data.error); return; } if(callback) callback(data); } } xhr.send(params); } function updateData() { for (var i = 0; i < arguments.length; i++) { document.getElementById(arguments[i]).innerHTML = data[arguments[i]]; } } function debitAccount(amount) { data.gold -= amount; updateData("gold"); } function creditAccount(amount){ data.gold += amount; sendRequest("craftmine.php", "op=withdrawMine&amount="+amount, function(xhr) { var gold = parseInt(xhr); if(isNaN(gold)) return; data.gold = gold; updateData("gold"); }); } function withdrawMine() { sendRequest("craftmine.php", "op=withdrawMine&amount="+data.mine, function(xhr) { var gold = parseInt(xhr); // Server's response is a string if(isNaN(gold)) return; data.gold = gold; data.mine = 0; updateData("gold", "mine"); }) } function initCraftMine() { sendRequest("craftmine.php", "op=getCraftMine", function(ret) { //console.log(ret.perso); data.gold = parseInt(ret.gold); // Server's response is a string data.mine = 0; // Reset mine if(ret.perso) updatePerso(ret.perso); if(ret.shop) displayShop(ret.shop); if(ret.inventory) displayInventory(ret.inventory); if(ret.dungeon == false){}//if we have left the donjon else if(typeof ret.dungeon.mob == "undefined") displayDungeon(0,1,true); //if we have reload just after buying the ticket else displayDungeon(ret.dungeon.mob,ret.dungeon.flat,true);//if we have reload in the middle of the dungeon data.miners = parseInt(ret.miners); updateData("gold", "mine", "miners"); }) } function updateMine() { data.mine += (data.miners+1); updateData("mine"); } function resetGame() { sendRequest("craftmine.php", "op=resetGame", function() { initCraftMine() }); } function init() { initCraftMine(); changeTab(); // Switch to tab specified in URL listSaves(); // Update save list on page load window.setInterval(updateMine, 1000); // Increase mine amount every 1 second window.onhashchange = changeTab; // Hook changeTab from js/gui.js to hashchange event }