diff --git a/assets/audio/mood_not_found.mp3 b/assets/audio/mood_not_found.mp3 new file mode 100644 index 0000000..72ff6f4 Binary files /dev/null and b/assets/audio/mood_not_found.mp3 differ diff --git a/assets/css/upgrades.css b/assets/css/upgrades.css index 620aad3..9bf862e 100644 --- a/assets/css/upgrades.css +++ b/assets/css/upgrades.css @@ -1,7 +1,17 @@ #upg-saves { + display: flex; + flex-direction: column; + font-size: 0.9em; visibility: hidden; position: absolute; left: 1rem; bottom: 1rem; opacity: 0.6; } + +#upg-saves-reset { + cursor: pointer; +} +#upg-saves-reset:hover { + text-decoration: underline; +} diff --git a/assets/img/upgrades/calm_music.png b/assets/img/upgrades/calm_music.png index b62bcc3..fd2e608 100644 Binary files a/assets/img/upgrades/calm_music.png and b/assets/img/upgrades/calm_music.png differ diff --git a/assets/img/upgrades/credits.png b/assets/img/upgrades/credits.png new file mode 100644 index 0000000..108a642 Binary files /dev/null and b/assets/img/upgrades/credits.png differ diff --git a/assets/img/upgrades/cuteface.png b/assets/img/upgrades/cuteface.png new file mode 100644 index 0000000..a1cd80e Binary files /dev/null and b/assets/img/upgrades/cuteface.png differ diff --git a/assets/img/upgrades/emojis.png b/assets/img/upgrades/emojis.png new file mode 100644 index 0000000..e02e17b Binary files /dev/null and b/assets/img/upgrades/emojis.png differ diff --git a/assets/img/upgrades/mood_lifter.png b/assets/img/upgrades/mood_lifter.png index b552d7d..1b83565 100644 Binary files a/assets/img/upgrades/mood_lifter.png and b/assets/img/upgrades/mood_lifter.png differ diff --git a/assets/img/upgrades/rain.png b/assets/img/upgrades/rain.png new file mode 100644 index 0000000..2558789 Binary files /dev/null and b/assets/img/upgrades/rain.png differ diff --git a/assets/img/upgrades/saves.png b/assets/img/upgrades/saves.png index 92ed41a..41ce2c1 100644 Binary files a/assets/img/upgrades/saves.png and b/assets/img/upgrades/saves.png differ diff --git a/index.html b/index.html index 96f17ed..7d98068 100644 --- a/index.html +++ b/index.html @@ -49,6 +49,7 @@
+ Reset progress
diff --git a/js/game.js b/js/game.js index d03e9dd..ef32fc8 100644 --- a/js/game.js +++ b/js/game.js @@ -11,6 +11,8 @@ const upgradeName = document.getElementById('upgrade-name'); const upgradeDesc = document.getElementById('upgrade-desc'); const upgradeCost = document.getElementById('upgrade-cost'); +const upgSavesReset = document.getElementById('upg-saves-reset'); + function updateMoodCounter() { moodCounter.innerText = mood; @@ -74,30 +76,34 @@ function onLiftMoodClick() { updateMoodCounter(); } +function applyUpgrade(upgrade) { + const upgradeIndex = upgrades.indexOf(upgrade); + purchasedUpgrades.push(upgrade.id); + upgrades.splice(upgradeIndex, 1); + + updateMoodCounter(); + clearUpgradeInfo(); + upgrade.onPurchase(); +} + function purchaseUpgrade(upgrade) { if (mood >= upgrade.cost) { mood -= upgrade.cost; - - const upgradeIndex = upgrades.indexOf(upgrade); - purchasedUpgrades.push(upgrade.id); - upgrades.splice(upgradeIndex, 1); - - updateMoodCounter(); - clearUpgradeInfo(); - upgrade.onPurchase(); + applyUpgrade(upgrade); } } // UPGRADES +// saves function enableSaves() { const saves = document.getElementById('upg-saves'); const savesText = document.getElementById('upg-saves-text'); saves.style.visibility = 'visible'; - let counter = 10; + let counter = 5; - setInterval(() => { + const updateCounter = () => { if (counter === 0) { const save = { mood, @@ -105,16 +111,61 @@ function enableSaves() { }; localStorage.setItem('save', JSON.stringify(save)); - counter = 11; + counter = 6; savesText.innerText = 'Saved!'; } else { counter--; savesText.innerText = 'Auto save in ' + counter; } - }, 1000); + } + + setInterval(updateCounter, 1000); + updateCounter(); } -function enableMusic() { +function loadSave() { + const save = localStorage.getItem('save'); + if (save) { + const decodedSave = JSON.parse(save); + mood = decodedSave.mood; + + const needUpgrades = upgrades.filter((upgrade) => decodedSave.purchasedUpgrades.includes(upgrade.id)); + needUpgrades.forEach((nUpgrade) => { + applyUpgrade(nUpgrade); + }); + + updateMoodCounter(); + } +} + +function onResetProgressClick() { + if (upgSavesReset.innerText === 'Reset progress') { + upgSavesReset.innerText = 'Reset progress (are you sure?)'; + } else { + localStorage.removeItem('save'); + location.reload(); + } +} + +// emojis + +function enableEmojis() { + setInterval(() => { + mood += 500; + updateMoodCounter(); + }, 10000); +} + +// calm_music, rain + +function enableAudio(name) { + const audio = new Audio('./assets/audio/' + name); + + setInterval(() => { + if (audio.paused) { + audio.play(); + } + }, 5000); } let upgrades = [ @@ -134,14 +185,47 @@ let upgrades = [ cost: 300, onPurchase: enableSaves, }, - { + { + id: 'emojis', + name: 'Emoji Thruster', + description: 'Let the emotions flyyyyyyy. +500mood/10s', + image: '../assets/img/upgrades/emojis.png', + cost: 500, + onPurchase: enableEmojis, + }, + { id: 'calm_music', - name: 'Megaphone', - description: 'Turn on calm lo-fi music', + name: 'Old Radio', + description: 'Listen to the hand-made music', image: '../assets/img/upgrades/calm_music.png', cost: 1000, - onPurchase: enableMusic, + onPurchase: () => enableAudio('mood_not_found.mp3'), + }, + { + id: 'rain', + name: 'Rain', + description: 'It\'s rainy outside...', + image: '../assets/img/upgrades/rain.png', + cost: 5000, + onPurchase: () => enableAudio(''), + }, + { + id: 'cuteface', + name: 'Cuteface', + description: 'A little bit... unusual background... no?..', + image: '../assets/img/upgrades/cuteface.png', + cost: 1e4, + onPurchase: () => {}, + }, + { + id: 'credits', + name: 'Credits', + description: 'Congratulations!', + image: '../assets/img/upgrades/credits.png', + cost: 1e22, + onPurchase: () => {}, }, ]; +loadSave(); updateUpgrades();