From 18150fc332f1815f8389e2b72b052941b64dcd10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Fri, 12 Oct 2018 11:11:11 +0900 Subject: [PATCH] Add: keyboard_shortcut to menu_typing_practice --- src/game/lib/keyboard_shortcut.js | 58 ++++++++++++++++++++++++ src/game/menu/menu_typing_practice.js | 16 +++++-- src/web/client/menu_typing_practice.html | 1 + 3 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 src/game/lib/keyboard_shortcut.js diff --git a/src/game/lib/keyboard_shortcut.js b/src/game/lib/keyboard_shortcut.js new file mode 100644 index 0000000..02956f9 --- /dev/null +++ b/src/game/lib/keyboard_shortcut.js @@ -0,0 +1,58 @@ +function KeyboardShortcut() { + console.log("KeyboardShortcut"); + + this.keyHandlerMapper = {}; + console.log(this.keyHandlerMapper[Phaser.KeyCode.ESC]); + + game.input.keyboard.addCallbacks(this, this.keyDown, this.keyUp, null); +}; + +KeyboardShortcut.prototype.addCallback = function(keyCode, keyDownHandler, keyUpHandler, callerClassName) { + if(this.keyHandlerMapper[keyCode] != undefined) { + this.keyHandlerMapper[keyCode] = null; + } + + this.keyHandlerMapper[keyCode] = { + "keyDownHandler": keyDownHandler, + "keyUpHandler": keyUpHandler, + "callerClassName": callerClassName + } + + // console.log(this.keyHandlerMapper); +} + +KeyboardShortcut.prototype.keyDown = function(char) { + // var keyCode = char.code; + var keyCode = char.keyCode; + // console.log(keyCode + " is pressed"); + + if(this.keyHandlerMapper[keyCode] == undefined) + return; + + var keyMapper = this.keyHandlerMapper[keyCode]; + var keyDownHandler = keyMapper["keyDownHandler"]; + if(keyDownHandler == undefined) + return; + + if(isDebugMode()) + console.log(keyCode + " key is down (" + keyMapper["callerClassName"] + ")"); + keyDownHandler(); +} + +KeyboardShortcut.prototype.keyUp = function(char) { + // var keyCode = char.code; + var keyCode = char.keyCode; + // console.log(keyCode + " is up"); + + if(this.keyHandlerMapper[keyCode] == undefined) + return; + + var keyMapper = this.keyHandlerMapper[keyCode]; + var keyUpHandler = keyMapper["keyUpHandler"]; + if(keyUpHandler == undefined) + return; + + if(isDebugMode()) + console.log(keyCode + " key is up (" + keyMapper["callerClassName"] + ")"); + keyUpHandler(); +} diff --git a/src/game/menu/menu_typing_practice.js b/src/game/menu/menu_typing_practice.js index c5fd870..2486288 100644 --- a/src/game/menu/menu_typing_practice.js +++ b/src/game/menu/menu_typing_practice.js @@ -39,11 +39,17 @@ var MenuTypingPractice = { // ); + this.keyboardShortcut = new KeyboardShortcut(); + this.keyboardShortcut.addCallback( + Phaser.KeyCode.ESC, // keyCode + null, // keyDownHandler + (function() { this.back(); }).bind(this), // keyUpHandler + "menu_typing_practice" // callerClassName + ); + // top ui var screenTopUI = new ScreenTopUI(); - screenTopUI.makeBackButton( function() { - location.href = '../../web/client/menu_app.html'; - }); + screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) ); screenTopUI.makeFullScreenButton(); @@ -76,6 +82,10 @@ var MenuTypingPractice = { this.makeActiveTypingPracticeAppButtons(); }, + back: function() { + location.href = '../../web/client/menu_app.html'; + }, + makeActiveTypingPracticeAppButtons: function() { var dbConnectManager = new DBConnectManager(); diff --git a/src/web/client/menu_typing_practice.html b/src/web/client/menu_typing_practice.html index 909c267..fbd767d 100644 --- a/src/web/client/menu_typing_practice.html +++ b/src/web/client/menu_typing_practice.html @@ -14,6 +14,7 @@ +