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();