From 1a9f4133603b110a5c8e1a351a39618e269183f8 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 26 May 2025 05:10:00 +0200 Subject: [PATCH] Refactor and improve consolation logic in animeCat.js --- animeCat.js | 76 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/animeCat.js b/animeCat.js index 9145a60..8e784ff 100644 --- a/animeCat.js +++ b/animeCat.js @@ -138,6 +138,41 @@ window.AnimeCat = class AnimeCat { }, delay); } + _consolation({ cleanup, mouseDown, mouseDownAt, reopenEyes, joyActive }) { + cleanup(); + mouseDown = false; + reopenEyes(); + const heldFor = Date.now() - mouseDownAt; + + if (heldFor > 1000) { + // mind. 1000ms oder (heldFor - 1000), je nachdem was größer ist + const mouthOpenTime = Math.max(heldFor - 1000, 1000); + + // Bildwahl: mischievous ab 4. Mal, sonst mouth_open + let imgToShow = this.images.mouthOpen || this.images.default; + if (this._consolationCount >= 3) { + // Ab dem vierten Mal: mischievous immer, danach 20% Chance + if ( + this._consolationCount === 3 || + Math.random() < 0.2 + ) { + imgToShow = this.images.mischievous || imgToShow; + } + } + + this.img.src = imgToShow; + this._consolationCount++; + this._startBlinking(); + setTimeout(() => { + if (!joyActive && !this._isSpeaking && !this._pettingActive) { + this.img.src = this.images.default; + } + }, mouthOpenTime); + } else { + this._startBlinking(); + } + } + _bindMouseHold() { let holdTimer = null; let joyTimeout = null; @@ -261,39 +296,14 @@ _bindMouseHold() { this._startBlinking(); }); } - // Trostpreis: Augen auf, dann mouth_open oder mischievous - cleanup(); - mouseDown = false; - reopenEyes(); - const heldFor = Date.now() - mouseDownAt; - - if (heldFor > 1000) { - // mind. 1000ms oder (heldFor - 1000), je nachdem was größer ist - const mouthOpenTime = Math.max(heldFor - 1000, 1000); - - // Bildwahl: mischievous ab 4. Mal, sonst mouth_open - let imgToShow = this.images.mouthOpen || this.images.default; - if (this._consolationCount >= 3) { - // Ab dem vierten Mal: mischievous immer, danach 20% Chance - if ( - this._consolationCount === 3 || - Math.random() < 0.2 - ) { - imgToShow = this.images.mischievous || imgToShow; - } - } - - this.img.src = imgToShow; - this._consolationCount++; - this._startBlinking(); - setTimeout(() => { - if (!joyActive && !this._isSpeaking && !this._pettingActive) { - this.img.src = this.images.default; - } - }, mouthOpenTime); - } else { - this._startBlinking(); - } + // Trostpreis: Augen auf, dann mouth_open oder mischievous + this.consolation({ + cleanup, + mouseDown, + mouseDownAt, + reopenEyes, + joyActive + }); mouseDown = false; }