so I used chatgpt for a part of this project and doing local storage stuff and chatgpt says this code works but it does not.Im trying to save some values with local storage and the multiplier and playermoney variables work correctly but when I try to save the variables that are in charge of the first upgrade button, it does not work and the values revert to the default ones.
Javascript code:
//variable assignation
const mainImg = document.getElementById("main-img");
const playerMoneyText = document.getElementById("player-money-text");
const buttonClickSound = document.getElementById("button-click-sound");
const btnUpgrade1 = document.getElementById("btn-upgrade1");
const btnUpgrade2 = document.getElementById("btn-upgrade2");
let multiplier = 1;
let playerMoney = 0;
// Basic clicker logic
mainImg.addEventListener("click", () => {
mainImg.classList.toggle("smallify");
playerMoney += multiplier
playerMoneyText.textContent = playerMoney;
});
// Defining the upgrade costs for btnUpgrade1
const upgradeCosts = [];
const costOriginal = 25;
const costAddedPercentage = 45;
for(let i = 0; i < 10; i++) {
const newCost = Math.floor(costOriginal * Math.pow(1 + costAddedPercentage / 100, i));
upgradeCosts.push(newCost);
};
// Upgrade logic for btnUpgrade1
let upgradeIndex = 0;
btnUpgrade1.textContent = `First Upgrade: ${costOriginal} dubloons`
btnUpgrade1.addEventListener("click", () => {
if(playerMoney >= upgradeCosts[upgradeIndex]) {
buttonClickSound.play()
multiplier += 1;
playerMoney -= upgradeCosts[upgradeIndex];
playerMoneyText.textContent = playerMoney;
upgradeIndex += 1;
console.log(upgradeIndex)
if(upgradeIndex < upgradeCosts.length) {
btnUpgrade1.textContent = `First Upgrade: ${upgradeCosts[upgradeIndex]} dubloons`
}else {
btnUpgrade1.textContent = "Upgraded to max";
btnUpgrade1.disabled = true;
}
}else {
alert("not enough money")
}
});
// Defining the upgrade costs for btnUpgrade2
const upgradeCosts2 = [];
const costOriginal2 = 1500;
const costAddedPercentage2 = 45;
for(let i = 0; i < 10 ; i++) {
const newCost2 = Math.floor(costOriginal2 * Math.pow(1 + costAddedPercentage2 / 100 ,i));
upgradeCosts2.push(newCost2);
};
// Upgrade logic for btnUpgrade2
let upgradeIndex2 = 0;
btnUpgrade2.textContent = `Second Upgrade: ${costOriginal2} dubloons`
btnUpgrade2.addEventListener("click",() => {
if(playerMoney >= upgradeCosts2[upgradeIndex2]) {
buttonClickSound.play()
multiplier += 3;
playerMoney -= upgradeCosts2[upgradeIndex2];
playerMoneyText.textContent = playerMoney;
upgradeIndex2 += 1;
if(upgradeIndex2 < upgradeCosts2.length) {
btnUpgrade2.textContent = `Second Upgrade : ${upgradeCosts2[upgradeIndex2]} dubloons`
}else {
btnUpgrade2.textContent = "Upgraded to max";
btnUpgrade2.disabled = true;
};
}else {
alert("not enough money");
};
});
// Function to remove the "smallify" class after the transition ends
function removeSmallifyClass() {
mainImg.classList.remove("smallify");
};
// Add event listener for transitionend event
mainImg.addEventListener("transitionend", removeSmallifyClass);
// Saving data before the page unloads
window.addEventListener("beforeunload", () => {
//Serialize data
const playerMoneyData = JSON.stringify(playerMoney);
const multiplierData = JSON.stringify(multiplier);
const upgradeCostsData = JSON.stringify(upgradeCosts);
const costOriginalData = JSON.stringify(costOriginal);
const costAddedPercentageData = JSON.stringify(costAddedPercentage);
const upgradeIndexData = JSON.stringify(upgradeIndex);
//Store data in Local Storage
localStorage.setItem(`playerMoney`,playerMoneyData);
localStorage.setItem('multiplier',multiplierData);
localStorage.setItem('upgradeCosts',upgradeCostsData);
localStorage.setItem('costOriginal',costOriginalData);
localStorage.setItem('costAddedPercentage',costAddedPercentageData);
localStorage.setItem('upgradeIndex',upgradeIndexData);
});
// Load data when the DOM fully loads
window.addEventListener('DOMContentLoaded', () => {
//Retrivere the previously set value from localStorage
const playerMoneyData = localStorage.getItem('playerMoney');
const multiplierData = localStorage.getItem(`multiplier`);
const upgradeCostsData = localStorage.getItem('upgradeCosts');
const costOriginalData = localStorage.getItem('costOriginal');
const costAddedPercentageData = localStorage.getItem('costAddedPercentage');
const upgradeIndexData = localStorage.getItem('upgradeIndex');
//Deserialize the previous Data
if(playerMoneyData) {
playerMoney = JSON.parse(playerMoneyData);
playerMoneyText.textContent = playerMoney; // Update the playerMoney Text
};
if(multiplierData) {
multiplier = JSON.parse(multiplierData);
};
if(upgradeCostsData) {
upgradeCosts = JSON.parse(upgradeCostsData);
};
if(costOriginalData) {
costOriginal = JSON.parse(costOriginalData);
};
if(costAddedPercentageData) {
costAddedPercentage = JSON.parse(costAddedPercentageData);
};
if(upgradeIndexData) {
upgradeIndex = JSON.parse(upgradeIndexData);
};
});
New contributor
Ya Yeet is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.