diff options
Diffstat (limited to 'centipede/js/game/input.js')
-rw-r--r-- | centipede/js/game/input.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/centipede/js/game/input.js b/centipede/js/game/input.js new file mode 100644 index 0000000..6ceff13 --- /dev/null +++ b/centipede/js/game/input.js @@ -0,0 +1,32 @@ +game.input = (() => { + "use strict"; + const Keyboard = () => { + const keys = {}; + const handlers = {}; + const keyPress = (event) => { + keys[event.key] = event.timeStamp; + }; + const keyRelease = (event) => { + delete keys[event.key]; + }; + const registerCommand = (key, handler) => { + handlers[key] = handler; + }; + const unregisterCommand = (key) => { + delete handlers[key]; + } + const update = (elapsedTime) => { + for (let key in keys) { + if (keys.hasOwnProperty(key)) { + if (handlers[key]) { + handlers[key](elapsedTime); + } + } + } + }; + window.addEventListener("keydown", keyPress); + window.addEventListener("keyup", keyRelease); + return {keys, handlers, registerCommand, unregisterCommand, update}; + } + return { Keyboard }; +})();
\ No newline at end of file |