From 1e29447a5069edd5f7676e86f91312ae2bf15b02 Mon Sep 17 00:00:00 2001 From: misterkirill Date: Sun, 22 Jun 2025 22:26:01 +0500 Subject: [PATCH] feat: add cursor upgrade, fix emoji upgrade --- assets/css/upgrades.css | 6 ++-- assets/img/cursors/cursor.png | Bin 0 -> 1696 bytes assets/img/upgrades/cursor.png | Bin 0 -> 6005 bytes index.html | 2 +- js/game.js | 62 ++++++++++++++++++++++++--------- 5 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 assets/img/cursors/cursor.png create mode 100644 assets/img/upgrades/cursor.png diff --git a/assets/css/upgrades.css b/assets/css/upgrades.css index c25fb93..7856ddf 100644 --- a/assets/css/upgrades.css +++ b/assets/css/upgrades.css @@ -15,10 +15,9 @@ text-decoration: underline; } -#upg-emojis { - display: none; +.upg-emojis { position: absolute; - font-size: 2em; + font-size: 2.5em; animation: 5s emojis linear infinite; } @keyframes emojis { @@ -89,6 +88,7 @@ top: 0; left: 0; overflow: hidden; + text-align: center; } .upg-credits-inner { display: flex; diff --git a/assets/img/cursors/cursor.png b/assets/img/cursors/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..1a05e422d685e0a239bb213c6fa556fa29db7d24 GIT binary patch literal 1696 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 progress -
😆
+
Mixer diff --git a/js/game.js b/js/game.js index 46e9c4f..8a64f7a 100644 --- a/js/game.js +++ b/js/game.js @@ -160,15 +160,26 @@ function onResetProgressClick() { // emojis -function enableEmojis() { +function getRandomEmoji() { const emojis = ['😎', '😆', '😛', '😏', '😔', '🥲', '😔', '😒', '😍', '😃', '🤓', '😊', '😁', '😄']; + return emojis[Math.floor(Math.random() * emojis.length)]; +} + +function addEmoji() { const upgEmojis = document.getElementById('upg-emojis'); upgEmojis.style.display = 'block'; + + const emoji = document.createElement('span'); + emoji.innerText = getRandomEmoji(); + emoji.className = 'upg-emojis'; + + setTimeout(() => { + upgEmojis.append(emoji); + }, Math.random() * 1000); setInterval(() => { - mood += 200; - const randomEmoji = emojis[Math.floor(Math.random() * emojis.length)]; - upgEmojis.innerText = randomEmoji; + mood += Math.floor(Math.random() * 1000); + emoji.innerText = getRandomEmoji(); updateMoodCounter(); }, 5000); } @@ -231,6 +242,15 @@ function showCredits() { credits.style.display = 'block'; } +// cursor + +function enableCursor() { + var allElements = document.querySelectorAll('body, .btn, .click-btn'); + for (var i = 0; i < allElements.length; i++) { + allElements[i].style.cursor = 'url("./assets/img/cursors/cursor.png"), auto'; + } +} + let upgrades = [ { @@ -252,10 +272,10 @@ let upgrades = [ { id: 'emojis', name: 'Emoji Thruster', - description: 'Flying emoji +200mood/5s', + description: 'Flying emoji. Gives some amount of mood every 5 seconds.', image: '../assets/img/upgrades/emojis.png', cost: 500, - onPurchase: enableEmojis, + onPurchase: addEmoji, }, { id: 'rain', @@ -265,36 +285,44 @@ let upgrades = [ cost: 1000, onPurchase: enableRain, }, + { + id: 'emojis2', + name: 'More Emoji Thrusters', + description: 'Let the emojis flyyyyyyy-- and get some more mood', + image: '../assets/img/upgrades/emojis2.png', + cost: 1500, + onPurchase: addEmoji, + }, { id: 'calm_music', name: 'Old Radio', description: 'Listen to the hand-made music', image: '../assets/img/upgrades/calm_music.png', - cost: 1500, + cost: 3000, onPurchase: enableMusic, }, + { + id: 'cursor', + name: 'Cursor', + description: 'Click Clack. +400 mood/click', + image: '../assets/img/upgrades/cursor.png', + cost: 4000, + onPurchase: enableCursor, + }, { id: 'mixer', name: 'Mixer', description: 'Control the sounds', image: '../assets/img/upgrades/mixer.png', - cost: 3000, + cost: 4500, onPurchase: enableMixer, }, - { - id: 'emojis2', - name: 'More Emoji Thrusters', - description: 'Let the emojis flyyyyyyy +200mood/5s', - image: '../assets/img/upgrades/emojis2.png', - cost: 4000, - onPurchase: enableEmojis, - }, { id: 'cuteface', name: 'Cuteface', description: 'A little bit... unusual background... no?..', image: '../assets/img/upgrades/cuteface.png', - cost: 15000, + cost: 8000, onPurchase: showCuteface, }, {