-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinput.js
More file actions
37 lines (28 loc) · 889 Bytes
/
input.js
File metadata and controls
37 lines (28 loc) · 889 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import {movePlayerRight, movePlayerLeft, movePlayerUp, movePlayerDown} from './player.js';
function getInputObj({key, keyCode, ctrlKey, shiftKey, altKey, code} = {}){
return {key, keyCode, ctrlKey, shiftKey, altKey, code};
}
async function inputEvent(){
const evtP = new Promise(resolve => $(document).one('keyup', resolve));
const evt = await evtP
evt.preventDefault();
return getInputObj(await evt);
}
export async function playerMoved(){
let move;
while(!move){
const evt = await inputEvent();
if(evt.key.startsWith('Arrow')) move = evt.key.slice(5).toLowerCase();
}
if(move === 'left') movePlayerLeft();
if(move === 'right') movePlayerRight();
if(move === 'up') movePlayerUp();
if(move === 'down') movePlayerDown();
}
export async function spacePressed(){
while(true){
let evt = await inputEvent();
if(evt.key === ' ') break;
}
return true;
}