touchscreen input no longer buffers
This commit is contained in:
		
							parent
							
								
									86cd935f03
								
							
						
					
					
						commit
						352c3aa16d
					
				
					 2 changed files with 14 additions and 4 deletions
				
			
		| 
						 | 
					@ -90,11 +90,10 @@
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		currentGame=snek;
 | 
							currentGame=snek;
 | 
				
			||||||
		//XXX
 | 
					 | 
				
			||||||
		window.snek=snek;
 | 
					 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	window.addEventListener('keydown', async e => {
 | 
						window.addEventListener('keydown', async e => {
 | 
				
			||||||
 | 
							e.preventDefault();
 | 
				
			||||||
		if(e.key=='f') {
 | 
							if(e.key=='f') {
 | 
				
			||||||
			if(document.fullscreenElement) await document.exitFullscreen();
 | 
								if(document.fullscreenElement) await document.exitFullscreen();
 | 
				
			||||||
			else await main.requestFullscreen();
 | 
								else await main.requestFullscreen();
 | 
				
			||||||
| 
						 | 
					@ -108,7 +107,8 @@
 | 
				
			||||||
		else if(e.key=='ArrowRight') inputs.right=true;
 | 
							else if(e.key=='ArrowRight') inputs.right=true;
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	window.addEventListener('touchstart', e => {
 | 
						const handleTouch=e => {
 | 
				
			||||||
 | 
							e.preventDefault();
 | 
				
			||||||
		let x=e.touches[0].clientX/window.innerWidth-.5;
 | 
							let x=e.touches[0].clientX/window.innerWidth-.5;
 | 
				
			||||||
		let y=e.touches[0].clientY/window.innerHeight-.5;
 | 
							let y=e.touches[0].clientY/window.innerHeight-.5;
 | 
				
			||||||
		const angle=((Math.atan2(x, y)+2*Math.PI)%(2*Math.PI))/Math.PI;
 | 
							const angle=((Math.atan2(x, y)+2*Math.PI)%(2*Math.PI))/Math.PI;
 | 
				
			||||||
| 
						 | 
					@ -118,6 +118,10 @@
 | 
				
			||||||
		else if(angle>.75 && angle<1.25) inputs.up=true;
 | 
							else if(angle>.75 && angle<1.25) inputs.up=true;
 | 
				
			||||||
		else if(angle>1.25 && angle<1.75) inputs.left=true;
 | 
							else if(angle>1.25 && angle<1.75) inputs.left=true;
 | 
				
			||||||
		else inputs.down=true;
 | 
							else inputs.down=true;
 | 
				
			||||||
	});
 | 
					
 | 
				
			||||||
 | 
							inputs.clearBuffer=true;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						window.addEventListener('touchstart', handleTouch);
 | 
				
			||||||
 | 
						window.addEventListener('touchmove', handleTouch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -322,6 +322,12 @@ class SnekGame {
 | 
				
			||||||
		else if(inputs.right && trySet([ 1, 0])) return delete inputs.right;
 | 
							else if(inputs.right && trySet([ 1, 0])) return delete inputs.right;
 | 
				
			||||||
		else if(inputs.up && trySet([ 0,-1])) return delete inputs.up;
 | 
							else if(inputs.up && trySet([ 0,-1])) return delete inputs.up;
 | 
				
			||||||
		else if(inputs.down &&  trySet([ 0, 1])) return delete inputs.down;
 | 
							else if(inputs.down &&  trySet([ 0, 1])) return delete inputs.down;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(inputs.clearBuffer) {
 | 
				
			||||||
 | 
								Object
 | 
				
			||||||
 | 
									.keys(inputs)
 | 
				
			||||||
 | 
									.forEach(k => delete inputs[k]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	start() {
 | 
						start() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue