let me pet the cat
This commit is contained in:
parent
500a00fcc5
commit
940f0ff2a6
2 changed files with 24 additions and 3 deletions
Binary file not shown.
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 7.1 KiB |
|
@ -12,6 +12,7 @@ function oneko() {
|
||||||
let nekoPosY = getRandomInt(32, window.innerHeight - 63);
|
let nekoPosY = getRandomInt(32, window.innerHeight - 63);
|
||||||
let mousePosX = nekoPosX - 32;
|
let mousePosX = nekoPosX - 32;
|
||||||
let mousePosY = nekoPosY - 32;
|
let mousePosY = nekoPosY - 32;
|
||||||
|
let mouseButtonDown = false;
|
||||||
let frameCount = 0;
|
let frameCount = 0;
|
||||||
let idleTime = 0;
|
let idleTime = 0;
|
||||||
let idleAnimation = null;
|
let idleAnimation = null;
|
||||||
|
@ -78,6 +79,12 @@ function oneko() {
|
||||||
[-1, 0],
|
[-1, 0],
|
||||||
[-1, -1],
|
[-1, -1],
|
||||||
],
|
],
|
||||||
|
heart: [
|
||||||
|
[-8, 0],
|
||||||
|
[-8, -1],
|
||||||
|
[-8, -2],
|
||||||
|
[-8, -3],
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
function create() {
|
function create() {
|
||||||
|
@ -97,10 +104,17 @@ function oneko() {
|
||||||
mousePosX = event.clientX;
|
mousePosX = event.clientX;
|
||||||
mousePosY = event.clientY;
|
mousePosY = event.clientY;
|
||||||
};
|
};
|
||||||
|
document.addEventListener("mousedown", toggleMouseState);
|
||||||
|
document.addEventListener("mouseup", toggleMouseState);
|
||||||
|
|
||||||
window.onekoInterval = setInterval(frame, 100);
|
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) {
|
function setSprite(name, frame) {
|
||||||
const sprite = spriteSets[name][frame % spriteSets[name].length];
|
const sprite = spriteSets[name][frame % spriteSets[name].length];
|
||||||
nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`;
|
nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`;
|
||||||
|
@ -111,7 +125,7 @@ function oneko() {
|
||||||
idleAnimationFrame = 0;
|
idleAnimationFrame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function idle() {
|
function idle(diffX, diffY) {
|
||||||
idleTime += 1;
|
idleTime += 1;
|
||||||
|
|
||||||
// every ~ 20 seconds
|
// every ~ 20 seconds
|
||||||
|
@ -141,7 +155,14 @@ function oneko() {
|
||||||
setSprite("tired", 0);
|
setSprite("tired", 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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));
|
setSprite("sleeping", Math.floor(idleAnimationFrame / 4));
|
||||||
|
}
|
||||||
|
|
||||||
if (idleAnimationFrame > 192) {
|
if (idleAnimationFrame > 192) {
|
||||||
resetIdleAnimation();
|
resetIdleAnimation();
|
||||||
}
|
}
|
||||||
|
@ -170,7 +191,7 @@ function oneko() {
|
||||||
const distance = Math.sqrt(diffX ** 2 + diffY ** 2);
|
const distance = Math.sqrt(diffX ** 2 + diffY ** 2);
|
||||||
|
|
||||||
if (distance < nekoSpeed || distance < 48) {
|
if (distance < nekoSpeed || distance < 48) {
|
||||||
idle();
|
idle(diffX, diffY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue