import { Key, KeyMap, PlayerInput } from "../types.js" let pressed = {} const updateRecent = (keymap: KeyMap) => { let max = -1 let key = undefined for (let code in pressed) { let weight = pressed[code] if (weight < max) continue max = weight key = keymap[code] } return key } export const startInputListener = (keymap: KeyMap): () => PlayerInput => { let key: Key = Key.NOTHING; let start = false; document.getElementById("start").onclick = function() { start = true } window.addEventListener("keydown", ev => { if(ev.repeat) { return; } if(!(ev.code in keymap)) { return; } pressed[ev.code] = Object.keys(pressed).length key = updateRecent(keymap) }); window.addEventListener("keyup", ev => { if (ev.repeat) { return; } if (!(ev.code in keymap)) { return } delete pressed[ev.code] key = updateRecent(keymap) }) let last = { key: Key.NOTHING, } return (): PlayerInput => { if(key === last.key && !start) { return; } last = { key, }; let s = start; start = false; return { key, start: s, } } }