summaryrefslogtreecommitdiff
path: root/centipede/js/game/input.js
diff options
context:
space:
mode:
Diffstat (limited to 'centipede/js/game/input.js')
-rw-r--r--centipede/js/game/input.js32
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