mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-05-05 07:07:50 +02:00
refactored saving/loading by making it into a class. Tested and debugged prestige mechanic
This commit is contained in:
+24
-110
@@ -1,6 +1,6 @@
|
||||
var Engine = {
|
||||
Debug: true,
|
||||
|
||||
|
||||
//Clickable objects
|
||||
Clickables: {
|
||||
//Main menu buttons
|
||||
@@ -85,92 +85,6 @@ var Engine = {
|
||||
_lastUpdate: new Date().getTime(),
|
||||
_idleSpeed: 200, //Speed (in ms) at which the main loop is updated
|
||||
|
||||
//Save function
|
||||
saveGame: function() {
|
||||
var PlayerSave = JSON.stringify(Player);
|
||||
var AllServersSave = JSON.stringify(AllServers);
|
||||
var CompaniesSave = JSON.stringify(Companies);
|
||||
var FactionsSave = JSON.stringify(Factions);
|
||||
var SpecialServerIpsSave = JSON.stringify(SpecialServerIps);
|
||||
var AugmentationsSave = JSON.stringify(Augmentations);
|
||||
|
||||
window.localStorage.setItem("netburnerPlayerSave", PlayerSave);
|
||||
window.localStorage.setItem("netburnerAllServersSave", AllServersSave);
|
||||
window.localStorage.setItem("netburnerCompaniesSave", CompaniesSave);
|
||||
window.localStorage.setItem("netburnerFactionsSave", FactionsSave);
|
||||
window.localStorage.setItem("netburnerSpecialServerIpsSave", SpecialServerIpsSave);
|
||||
window.localStorage.setItem("netburnerAugmentationsSave", AugmentationsSave);
|
||||
|
||||
console.log("Game saved to local storage");
|
||||
},
|
||||
|
||||
//Load saved game function
|
||||
loadSave: function() {
|
||||
//Check to see if file exists
|
||||
if (!window.localStorage.getItem("netburnerPlayerSave")) {
|
||||
console.log("No Player save to load");
|
||||
return false;
|
||||
} else if (!window.localStorage.getItem("netburnerAllServersSave")) {
|
||||
console.log("No AllServers save to load");
|
||||
return false;
|
||||
} else if (!window.localStorage.getItem("netburnerCompaniesSave")) {
|
||||
console.log("No Companies save to load");
|
||||
return false;
|
||||
} else if (!window.localStorage.getItem("netburnerFactionsSave")) {
|
||||
console.log("No Factions save to load");
|
||||
return false;
|
||||
} else if (!window.localStorage.getItem("netburnerSpecialServerIpsSave")) {
|
||||
console.log("No Special Server Ips save to load");
|
||||
return false;
|
||||
} else if (!window.localStorage.getItem("netburnerAugmentationsSave")) {
|
||||
console.log("No Augmentations save to load");
|
||||
return false;
|
||||
} else {
|
||||
var PlayerSave = window.localStorage.getItem("netburnerPlayerSave");
|
||||
var AllServersSave = window.localStorage.getItem("netburnerAllServersSave");
|
||||
var CompaniesSave = window.localStorage.getItem("netburnerCompaniesSave");
|
||||
var FactionsSave = window.localStorage.getItem("netburnerFactionsSave");
|
||||
var SpecialServerIpsSave = window.localStorage.getItem("netburnerSpecialServerIpsSave");
|
||||
var AugmentationsSave = window.localStorage.getItem("netburnerAugmentationsSave");
|
||||
|
||||
Player = JSON.parse(PlayerSave, Reviver);
|
||||
AllServers = JSON.parse(AllServersSave, Reviver);
|
||||
Companies = JSON.parse(CompaniesSave, Reviver);
|
||||
Factions = JSON.parse(FactionsSave, Reviver);
|
||||
SpecialServerIps = JSON.parse(SpecialServerIpsSave, Reviver);
|
||||
Augmentations = JSON.parse(AugmentationsSave, Reviver);
|
||||
return true;
|
||||
}
|
||||
},
|
||||
|
||||
//Delete saved game function
|
||||
deleteSave: function() {
|
||||
//TODO if a save doesn't exist..maybe I shouldn't return? I just keep going
|
||||
//or else nothing gets deleted. TODO Fix this
|
||||
if (window.localStorage.getItem("netburnerPlayerSave")) {
|
||||
window.localStorage.removeItem("netburnerPlayerSave");
|
||||
}
|
||||
|
||||
if (window.localStorage.getItem("netburnerAllServersSave")) {
|
||||
window.localStorage.removeItem("netburnerAllServersSave");
|
||||
}
|
||||
|
||||
if (window.localStorage.getItem("netburnerCompaniesSave")) {
|
||||
window.localStorage.removeItem("netburnerCompaniesSave");
|
||||
}
|
||||
|
||||
if (window.localStorage.getItem("netburnerFactionsSave")) {
|
||||
window.localStorage.removeItem("netburnerFactionsSave");
|
||||
}
|
||||
|
||||
if (window.localStorage.getItem("netburnerSpecialServerIpsSave")) {
|
||||
window.localStorage.removeItem("netburnerSpecialServerIpsSave");
|
||||
}
|
||||
|
||||
if (window.localStorage.getItem("netburnerAugmentationsSave")) {
|
||||
window.localStorage.removeItem("netburnerAugmentationsSave");
|
||||
}
|
||||
},
|
||||
|
||||
/* Load content when a main menu button is clicked */
|
||||
loadTerminalContent: function() {
|
||||
@@ -312,7 +226,7 @@ var Engine = {
|
||||
companyPosition = Player.companyPosition.positionName;
|
||||
}
|
||||
Engine.Display.characterInfo.innerHTML =
|
||||
'<b>General</b><br><br>' +
|
||||
('<b>General</b><br><br>' +
|
||||
'Current City: ' + Player.city + '<br><br>' +
|
||||
'Employer: ' + Player.companyName + '<br>' +
|
||||
'Job Title: ' + companyPosition + '<br><br>' +
|
||||
@@ -320,43 +234,43 @@ var Engine = {
|
||||
'<b>Stats</b><br><br>' +
|
||||
'Hacking Level: ' + (Player.hacking_skill).toLocaleString() +
|
||||
" (" + formatNumber(Player.hacking_exp, 4) + ' experience)<br>' +
|
||||
'Strength: ' + (Player.strength).toLocaleString() +
|
||||
'Strength: ' + (Player.strength).toLocaleString() +
|
||||
" (" + formatNumber(Player.strength_exp, 4) + ' experience)<br>' +
|
||||
'Defense: ' + (Player.defense).toLocaleString() +
|
||||
'Defense: ' + (Player.defense).toLocaleString() +
|
||||
" (" + formatNumber(Player.defense_exp, 4) + ' experience)<br>' +
|
||||
'Dexterity: ' + (Player.dexterity).toLocaleString() +
|
||||
'Dexterity: ' + (Player.dexterity).toLocaleString() +
|
||||
" (" + formatNumber(Player.dexterity_exp, 4) + ' experience)<br>' +
|
||||
'Agility: ' + (Player.agility).toLocaleString() +
|
||||
'Agility: ' + (Player.agility).toLocaleString() +
|
||||
" (" + formatNumber(Player.agility_exp, 4) + ' experience)<br>' +
|
||||
'Charisma: ' + (Player.charisma).toLocaleString() +
|
||||
'Charisma: ' + (Player.charisma).toLocaleString() +
|
||||
" (" + formatNumber(Player.charisma_exp, 4) + ' experience)<br><br><br>' +
|
||||
'<b>Multipliers</b><br><br>' +
|
||||
'Hacking Chance multiplier: ' + formatNumber(Player.hacking_chance_mult * 100, 2) + '%<br>' +
|
||||
'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '%<br>' +
|
||||
'Hacking money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '%<br><br>' +
|
||||
'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '%<br>' +
|
||||
'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '%<br>' +
|
||||
'Hacking money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '%<br><br>' +
|
||||
'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '%<br>' +
|
||||
'Hacking Experience multiplier: ' + formatNumber(Player.hacking_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '%<br>' +
|
||||
'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '%<br>' +
|
||||
'Strength Experience multiplier: ' + formatNumber(Player.strength_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Defense Level multiplier: ' + formatNumber(Player.defense_mult * 100, 2) + '%<br>' +
|
||||
'Defense Level multiplier: ' + formatNumber(Player.defense_mult * 100, 2) + '%<br>' +
|
||||
'Defense Experience multiplier: ' + formatNumber(Player.defense_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Dexterity Level multiplier: ' + formatNumber(Player.dexterity_mult * 100, 2) + '%<br>' +
|
||||
'Dexterity Level multiplier: ' + formatNumber(Player.dexterity_mult * 100, 2) + '%<br>' +
|
||||
'Dexterity Experience multiplier: ' + formatNumber(Player.dexterity_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Agility Level multiplier: ' + formatNumber(Player.agility_mult * 100, 2) + '%<br>' +
|
||||
'Agility Level multiplier: ' + formatNumber(Player.agility_mult * 100, 2) + '%<br>' +
|
||||
'Agility Experience multiplier: ' + formatNumber(Player.agility_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Charisma Level multiplier: ' + formatNumber(Player.charisma_mult * 100, 2) + '%<br>' +
|
||||
'Charisma Level multiplier: ' + formatNumber(Player.charisma_mult * 100, 2) + '%<br>' +
|
||||
'Charisma Experience multiplier: ' + formatNumber(Player.charisma_exp_mult * 100, 2) + '%<br><br>' +
|
||||
'Hacknet Node production multiplier: ' + formatNumber(Player.hacknet_node_money_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node purchase cost multiplier: '+ formatNumber(Player.hacknet_node_purchase_cost_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node RAM upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_ram_cost_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node production multiplier: ' + formatNumber(Player.hacknet_node_money_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node purchase cost multiplier: ' + formatNumber(Player.hacknet_node_purchase_cost_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node RAM upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_ram_cost_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node Core purchase cost multiplier: ' + formatNumber(Player.hacknet_node_core_cost_mult * 100, 2) + '%<br>' +
|
||||
'Hacknet Node level upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_level_cost_mult * 100, 2) + '%<br><br>' +
|
||||
'Company reputation gain multiplier: ' + formatNumber(Player.company_rep_mult * 100, 2) + '%<br>' +
|
||||
'Faction reputation gain multiplier: ' + formatNumber(Player.faction_rep_mult * 100, 2) + '%<br>' +
|
||||
'Salary multiplier: ' + formatNumber(Player.work_money_mult * 100, 2) + '%<br><br><br>' +
|
||||
'<b>Misc</b><br><br>' +
|
||||
'Servers owned: ' + Player.purchasedServers.length + '<br>' +
|
||||
'Hacknet Nodes owned: ' + Player.hacknetNodes.length + '<br>';
|
||||
'Servers owned: ' + Player.purchasedServers.length + '<br>' +
|
||||
'Hacknet Nodes owned: ' + Player.hacknetNodes.length + '<br>').replace( / /g, " " );
|
||||
|
||||
},
|
||||
|
||||
@@ -660,7 +574,7 @@ var Engine = {
|
||||
//is necessary and then resets the counter
|
||||
checkCounters: function() {
|
||||
if (Engine.Counters.autoSaveCounter <= 0) {
|
||||
Engine.saveGame();
|
||||
saveObject.saveGame();
|
||||
Engine.Counters.autoSaveCounter = 300;
|
||||
}
|
||||
|
||||
@@ -806,13 +720,13 @@ var Engine = {
|
||||
|
||||
Engine.Clickables.saveMainMenuButton = document.getElementById("save-game-link");
|
||||
Engine.Clickables.saveMainMenuButton.addEventListener("click", function() {
|
||||
Engine.saveGame();
|
||||
saveObject.saveGame();
|
||||
return false;
|
||||
});
|
||||
|
||||
Engine.Clickables.deleteMainMenuButton = document.getElementById("delete-game-link");
|
||||
Engine.Clickables.deleteMainMenuButton.addEventListener("click", function() {
|
||||
Engine.deleteSave();
|
||||
saveObject.deleteGame();
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -927,7 +841,7 @@ var Engine = {
|
||||
Engine.Display.scriptEditorText = document.getElementById("script-editor-text");
|
||||
|
||||
//Load game from save or create new game
|
||||
if (Engine.loadSave()) {
|
||||
if (loadGame(saveObject)) {
|
||||
console.log("Loaded game from save");
|
||||
CompanyPositions.init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user