forked from nyancrimew/maia.crimew.gay
		
	update oneko.js
This commit is contained in:
		
							parent
							
								
									8c77b05fba
								
							
						
					
					
						commit
						32d05fc840
					
				
					 1 changed files with 171 additions and 139 deletions
				
			
		|  | @ -14,11 +14,27 @@ | |||
|     const spriteSets = { | ||||
|       idle: [[-3, -3]], | ||||
|       alert: [[-7, -3]], | ||||
|         scratch: [ | ||||
|       scratchSelf: [ | ||||
|         [-5, 0], | ||||
|         [-6, 0], | ||||
|         [-7, 0], | ||||
|       ], | ||||
|       scratchWallN: [ | ||||
|         [0, 0], | ||||
|         [0, -1], | ||||
|       ], | ||||
|       scratchWallS: [ | ||||
|         [-7, -1], | ||||
|         [-6, -2], | ||||
|       ], | ||||
|       scratchWallE: [ | ||||
|         [-2, -2], | ||||
|         [-2, -3], | ||||
|       ], | ||||
|       scratchWallW: [ | ||||
|         [-4, 0], | ||||
|         [-4, -1], | ||||
|       ], | ||||
|       tired: [[-3, -2]], | ||||
|       sleeping: [ | ||||
|         [-2, 0], | ||||
|  | @ -57,6 +73,7 @@ | |||
|         [-1, -1], | ||||
|       ], | ||||
|     }; | ||||
|    | ||||
|     function create() { | ||||
|       nekoEl.id = "oneko"; | ||||
|       nekoEl.style.width = "32px"; | ||||
|  | @ -80,9 +97,7 @@ | |||
|    | ||||
|     function setSprite(name, frame) { | ||||
|       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`; | ||||
|     } | ||||
|    | ||||
|     function resetIdleAnimation() { | ||||
|  | @ -94,13 +109,23 @@ | |||
|       idleTime += 1; | ||||
|    | ||||
|       // every ~ 20 seconds
 | ||||
|         if ( | ||||
|             idleTime > 10 && | ||||
|             Math.floor(Math.random() * 200) == 0 && | ||||
|             idleAnimation == null | ||||
|         ) { | ||||
|             idleAnimation = ["sleeping", "scratch"][ | ||||
|                 Math.floor(Math.random() * 2) | ||||
|       if (idleTime > 10 && true && idleAnimation == null) { | ||||
|         let avalibleIdleAnimations = ["sleeping", "scratchSelf"]; | ||||
|         if (nekoPosX < 32) { | ||||
|           avalibleIdleAnimations.push("scratchWallW"); | ||||
|         } | ||||
|         if (nekoPosY < 32) { | ||||
|           avalibleIdleAnimations.push("scratchWallN"); | ||||
|         } | ||||
|         if (nekoPosX > window.innerWidth - 32) { | ||||
|           avalibleIdleAnimations.push("scratchWallE"); | ||||
|         } | ||||
|         if (nekoPosY > window.innerHeight - 32) { | ||||
|           avalibleIdleAnimations.push("scratchWallS"); | ||||
|         } | ||||
|         idleAnimation = | ||||
|           avalibleIdleAnimations[ | ||||
|             Math.floor(Math.random() * avalibleIdleAnimations.length) | ||||
|           ]; | ||||
|       } | ||||
|    | ||||
|  | @ -115,8 +140,12 @@ | |||
|             resetIdleAnimation(); | ||||
|           } | ||||
|           break; | ||||
|             case "scratch": | ||||
|                 setSprite("scratch", idleAnimationFrame); | ||||
|         case "scratchWallN": | ||||
|         case "scratchWallS": | ||||
|         case "scratchWallE": | ||||
|         case "scratchWallW": | ||||
|         case "scratchSelf": | ||||
|           setSprite(idleAnimation, idleAnimationFrame); | ||||
|           if (idleAnimationFrame > 9) { | ||||
|             resetIdleAnimation(); | ||||
|           } | ||||
|  | @ -159,9 +188,12 @@ | |||
|       nekoPosX -= (diffX / distance) * nekoSpeed; | ||||
|       nekoPosY -= (diffY / distance) * nekoSpeed; | ||||
|    | ||||
|       nekoPosX = Math.min(Math.max(16, nekoPosX), window.innerWidth - 16); | ||||
|       nekoPosY = Math.min(Math.max(16, nekoPosY), window.innerHeight - 16); | ||||
|    | ||||
|       nekoEl.style.left = `${nekoPosX - 16}px`; | ||||
|       nekoEl.style.top = `${nekoPosY - 16}px`; | ||||
|     } | ||||
|    | ||||
|     create(); | ||||
| })(); | ||||
|   })(); | ||||
		Loading…
	
		Reference in a new issue