1
0

Refactor and improve consolation logic in animeCat.js

This commit is contained in:
2025-05-26 05:10:00 +02:00
parent 042fb516c9
commit 1a9f413360

View File

@@ -138,6 +138,41 @@ window.AnimeCat = class AnimeCat {
}, delay); }, 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() { _bindMouseHold() {
let holdTimer = null; let holdTimer = null;
let joyTimeout = null; let joyTimeout = null;
@@ -261,39 +296,14 @@ _bindMouseHold() {
this._startBlinking(); this._startBlinking();
}); });
} }
// Trostpreis: Augen auf, dann mouth_open oder mischievous // Trostpreis: Augen auf, dann mouth_open oder mischievous
cleanup(); this.consolation({
mouseDown = false; cleanup,
reopenEyes(); mouseDown,
const heldFor = Date.now() - mouseDownAt; mouseDownAt,
reopenEyes,
if (heldFor > 1000) { joyActive
// 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();
}
mouseDown = false; mouseDown = false;
} }