From 99c72394bddcf8b23eefd78f6bb45d3dd17c3bb3 Mon Sep 17 00:00:00 2001 From: Russell2259 Date: Tue, 27 Feb 2024 18:18:55 +0000 Subject: [PATCH] add date type easter egg --- static/assets/JSON/games.json | 4 ++-- static/assets/js/eastereggs.js | 42 +++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/static/assets/JSON/games.json b/static/assets/JSON/games.json index 9240323..d0245dd 100644 --- a/static/assets/JSON/games.json +++ b/static/assets/JSON/games.json @@ -1043,7 +1043,7 @@ }, { "name": "Radius Raid", - "target": "/cdn/images/radiusraid.jpg", - "image": "https://jackrugile.com/radius-raid/" + "target": "https://jackrugile.com/radius-raid/", + "image": "/cdn/images/radiusraid.jpg" } ] diff --git a/static/assets/js/eastereggs.js b/static/assets/js/eastereggs.js index 89a91c4..bc16e46 100644 --- a/static/assets/js/eastereggs.js +++ b/static/assets/js/eastereggs.js @@ -7,8 +7,9 @@ /** * @typedef easterEgg * @type {object} - * @property {'keybind' | 'click'} easterEgg.type + * @property {'keybind' | 'date'} easterEgg.type * @property {string} easterEgg.phrase + * @property {string} easterEgg.date * @property {number} easterEgg.clickCount * @property {object} easterEgg.element * @property {object} easterEgg.variables @@ -55,6 +56,31 @@ const utils = { return { remove: () => window.removeEventListener(listener) }; + }, + /** + * @param {string} date + * @param {easterEgg['run']} script + */ + createDate: async (date, script) => { + date = date.split('/'); + + if (date.length === 3) { + const day = date[1] === '*' ? new Date().getDate() : date[1]; + const month = date[0] === '*' ? new Date().getMonth() : date[0]; + const year = date[2] === '*' ? new Date().getFullYear() : date[2]; + + if (!utils.easterEggActive && (new Date().getDate() === day && new Date().getMonth() === month && new Date().getFullYear() === year)) { + try { + await script({ + remove: () => window.removeEventListener('keydown', listener, true) + }); + + utils.easterEggActive = false; + } catch (e) { + utils.easterEggActive = false; + } + } + } else throw new Error('Invalid date'); } }; @@ -386,10 +412,24 @@ easterEggs.push({ }) }); +easterEggs.push({ + type: 'date', + date: '4/1/*', + run: () => { + // April fools =) + } +}); + export default () => easterEggs.forEach(easterEgg => { if (easterEgg.type === 'keybind') { utils.createKeybind(easterEgg.phrase, easterEgg.run); + try { + easterEgg.preload(); + } catch (e) { } + } else if (easterEgg.type === 'date') { + utils.createDate(easterEgg.date, easterEgg.run); + try { easterEgg.preload(); } catch (e) { }