From 940f0ff2a61bf7232dadda892b6033c0745cd213 Mon Sep 17 00:00:00 2001 From: Lorenz Koehler Date: Fri, 5 Apr 2024 23:56:46 +0200 Subject: [PATCH] let me pet the cat --- src/static/img/maia_oneko.gif | Bin 6512 -> 7292 bytes src/static/oneko.js | 27 ++++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/static/img/maia_oneko.gif b/src/static/img/maia_oneko.gif index 0d264d87d0b9106914df8d1475d80b978a87e609..794918e80766178f48054ca03e099eba0cd9de6c 100644 GIT binary patch delta 7293 zcmaKu=Q|sY<8~u9L4w2#BDNZ_XC)DP6MGafOH~lGRk3I7J!|j1>9SYVUfp)Bwsb1} z=4(eyozyuIW$|C8r|Hx@$fd<=ii5c8#4bWQ9+k~?F%Caazur3Iv`+33*; z2MV75Zn^)WUo^joO|O1m8Xs7A#?7Q)H<>VC5>DRsfAnnOUz8nEgPvZ)($YgV#uONz z7#O5tk>E#5N0$UFrmvUg z7AHM#(YCO^7aqb0ngA|NO}7A>+DH7K7MCgv2NX<9-W(?GT5hh1%?gTY+;3f|vn*s| z%O;SVIt)bU6Qu{yJvChtg3E{89Gtk6cCjmZ`!KooNX|Jm$X5Z zn2@7u4Q4rUW(xogO0KN=EvpyLz#jnPQl);`!%0D_3 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 N4c@g)CISF={tvJ?o3#J{ diff --git a/src/static/oneko.js b/src/static/oneko.js index 7900f91..32c36a2 100644 --- a/src/static/oneko.js +++ b/src/static/oneko.js @@ -12,6 +12,7 @@ function oneko() { let nekoPosY = getRandomInt(32, window.innerHeight - 63); let mousePosX = nekoPosX - 32; let mousePosY = nekoPosY - 32; + let mouseButtonDown = false; let frameCount = 0; let idleTime = 0; let idleAnimation = null; @@ -78,6 +79,12 @@ function oneko() { [-1, 0], [-1, -1], ], + heart: [ + [-8, 0], + [-8, -1], + [-8, -2], + [-8, -3], + ], }; function create() { @@ -97,10 +104,17 @@ function oneko() { mousePosX = event.clientX; mousePosY = event.clientY; }; + document.addEventListener("mousedown", toggleMouseState); + document.addEventListener("mouseup", toggleMouseState); window.onekoInterval = setInterval(frame, 100); } + function toggleMouseState(e) { + var flags = e.buttons !== undefined ? e.buttons : e.which; + mouseButtonDown = (flags & 1) === 1; + } + function setSprite(name, frame) { const sprite = spriteSets[name][frame % spriteSets[name].length]; nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`; @@ -111,7 +125,7 @@ function oneko() { idleAnimationFrame = 0; } - function idle() { + function idle(diffX, diffY) { idleTime += 1; // every ~ 20 seconds @@ -141,7 +155,14 @@ function oneko() { setSprite("tired", 0); break; } - setSprite("sleeping", Math.floor(idleAnimationFrame / 4)); + + // check diffs to ensure pointer is on sprite + if (mouseButtonDown && diffY < 8 && diffY > -18 && diffX < 18 && diffX > -18) { + setSprite("heart", Math.floor(idleAnimationFrame / 4)); + } else { + setSprite("sleeping", Math.floor(idleAnimationFrame / 4)); + } + if (idleAnimationFrame > 192) { resetIdleAnimation(); } @@ -170,7 +191,7 @@ function oneko() { const distance = Math.sqrt(diffX ** 2 + diffY ** 2); if (distance < nekoSpeed || distance < 48) { - idle(); + idle(diffX, diffY); return; }