From 64a93f14abc251236829cc5c57745cdd6b3a4fcc Mon Sep 17 00:00:00 2001 From: LoveEevee Date: Wed, 29 Aug 2018 08:58:03 +0300 Subject: [PATCH] Remove hardcoded keyCodes --- public/src/js/controller.js | 13 ++++--- public/src/js/game.js | 54 +++++++++++---------------- public/src/js/keyboard.js | 74 ++++++++++++++++++------------------- public/src/js/mekadon.js | 37 ++++++++++--------- public/src/js/view.js | 10 +++-- 5 files changed, 91 insertions(+), 97 deletions(-) diff --git a/public/src/js/controller.js b/public/src/js/controller.js index 4a63d0f..a8af97e 100644 --- a/public/src/js/controller.js +++ b/public/src/js/controller.js @@ -13,6 +13,8 @@ function Controller(selectedSong, songData, autoPlayEnabled){ var _mainLoop; var _pauseMenu = false; + this.autoPlayEnabled = autoPlayEnabled + this.run = function(){ _this.loadUIEvents(); @@ -170,6 +172,10 @@ function Controller(selectedSong, songData, autoPlayEnabled){ return _keyboard.setKey(keyCode, down); } + this.getBindings = function(){ + return _keyboard.getBindings(); + } + this.getSongData = function(){ return _game.getSongData(); } @@ -215,12 +221,7 @@ function Controller(selectedSong, songData, autoPlayEnabled){ } this.autoPlay = function(circle){ - if(autoPlayEnabled){ - if(circle && circle.getStatus() == 450){ - _mekadon.play(circle) - } - return true - } + _mekadon.play(circle) } } \ No newline at end of file diff --git a/public/src/js/game.js b/public/src/js/game.js index 09a45c7..9b36758 100644 --- a/public/src/js/game.js +++ b/public/src/js/game.js @@ -117,48 +117,36 @@ function Game(controller, selectedSong, songData){ var circle = circles[_currentCircle]; if(circle){ - - if(controller.autoPlay(circle)){ - return + if(controller.autoPlayEnabled){ + return controller.autoPlay(circle) } - - if(controller.getKeys()[86]){ - if(!circle.getPlayed() && !controller.isWaitingForKeyup(86, "score") && circle.getStatus()!=-1){ - var score = _this.checkScore(circle); - circle.played(score); - _this.updateCurrentCircle(); - controller.waitForKeyup(86, "score"); - } + var keys = controller.getKeys() + var kbd = controller.getBindings() + if(keys[kbd["don_l"]]){ + _this.checkKey(kbd["don_l"], circle) } - if(controller.getKeys()[66]){ - if(!circle.getPlayed() && !controller.isWaitingForKeyup(66, "score") && circle.getStatus()!=-1){ - var score = _this.checkScore(circle); - circle.played(score); - _this.updateCurrentCircle(); - controller.waitForKeyup(66, "score"); - } + if(keys[kbd["don_r"]]){ + _this.checkKey(kbd["don_r"], circle) } - if(controller.getKeys()[67]){ - if(!circle.getPlayed() && !controller.isWaitingForKeyup(67, "score") && circle.getStatus()!=-1){ - var score = _this.checkScore(circle); - circle.played(score); - _this.updateCurrentCircle(); - controller.waitForKeyup(67, "score"); - } + if(keys[kbd["ka_l"]]){ + _this.checkKey(kbd["ka_l"], circle) } - if(controller.getKeys()[78]){ - if(!circle.getPlayed() && !controller.isWaitingForKeyup(78, "score") && circle.getStatus()!=-1){ - var score = _this.checkScore(circle); - circle.played(score); - _this.updateCurrentCircle(); - controller.waitForKeyup(78, "score"); - } + if(keys[kbd["ka_r"]]){ + _this.checkKey(kbd["ka_r"], circle) } - } } + this.checkKey = function(keyCode, circle){ + if(!circle.getPlayed() && !controller.isWaitingForKeyup(keyCode, "score") && circle.getStatus()!=-1){ + var score = _this.checkScore(circle); + circle.played(score); + _this.updateCurrentCircle(); + controller.waitForKeyup(keyCode, "score"); + } + } + this.checkScore = function(circle){ if( diff --git a/public/src/js/keyboard.js b/public/src/js/keyboard.js index a846934..78339ee 100644 --- a/public/src/js/keyboard.js +++ b/public/src/js/keyboard.js @@ -1,11 +1,23 @@ function Keyboard(controller){ + var _kbd = { + "don_l": 86, // V + "don_r": 66, // B + "ka_l": 67, // C + "ka_r": 78, // N + "pause": 81, // Q + "back": 8 // Backspace + } var _this = this; var _keys = {}; var _waitKeyupScore = {}; var _waitKeyupSound = {}; var _waitKeyupMenu = {}; + this.getBindings = function(){ + return _kbd + } + $(document).keydown(function(e){ if (e.which === 8 && !$(e.target).is("input, textarea")) @@ -24,12 +36,12 @@ function Keyboard(controller){ }); this.buttonEnabled = function(keyCode){ - if(controller.autoPlay()){ + if(controller.autoPlayEnabled){ switch(keyCode){ - case 86: - case 66: - case 67: - case 78: + case _kbd["don_l"]: + case _kbd["don_r"]: + case _kbd["ka_l"]: + case _kbd["ka_r"]: return false } } @@ -37,45 +49,33 @@ function Keyboard(controller){ } this.checkGameKeys = function(){ - - if(_keys[86] && !_this.isWaitingForKeyup(86, "sound")){ - // V, play 'don' sound - controller.playSound('note_don'); - _this.waitForKeyup(86, "sound"); - } - if(_keys[66] && !_this.isWaitingForKeyup(66, "sound")){ - // B, play 'don' sound - controller.playSound('note_don'); - _this.waitForKeyup(66, "sound"); - } - - if(_keys[67] && !_this.isWaitingForKeyup(67, "sound")){ - // C, play 'ka' sound - controller.playSound('note_ka'); - _this.waitForKeyup(67, "sound"); - } - if(_keys[78] && !_this.isWaitingForKeyup(78, "sound")){ - // N, play 'ka' sound - controller.playSound('note_ka'); - _this.waitForKeyup(78, "sound"); - } - + _this.checkKeySound(_kbd["don_l"], "note_don") + _this.checkKeySound(_kbd["don_r"], "note_don") + _this.checkKeySound(_kbd["ka_l"], "note_ka") + _this.checkKeySound(_kbd["ka_r"], "note_ka") } this.checkMenuKeys = function(){ - - if(_keys[8] && !_this.isWaitingForKeyup(8, "menu")){ - // Backspace, go back to song selection - _this.waitForKeyup(8, "menu"); + _this.checkKey(_kbd["back"], "menu", function(){ controller.pauseSound("main-music", true); controller.songSelection(); - } - if(_keys[81] && !_this.isWaitingForKeyup(81, "menu")){ - // Q, pause the game - _this.waitForKeyup(81, "menu"); + }) + _this.checkKey(_kbd["pause"], "menu", function(){ controller.togglePauseMenu(); + }) + } + + this.checkKey = function(keyCode, keyup, callback){ + if(_keys[keyCode] && !_this.isWaitingForKeyup(keyCode, keyup)){ + _this.waitForKeyup(keyCode, keyup); + callback() } - + } + + this.checkKeySound = function(keyCode, sound){ + _this.checkKey(keyCode, "sound", function(){ + controller.playSound(sound); + }) } this.getKeys = function(){ diff --git a/public/src/js/mekadon.js b/public/src/js/mekadon.js index 475e180..b365de0 100644 --- a/public/src/js/mekadon.js +++ b/public/src/js/mekadon.js @@ -6,24 +6,27 @@ class Mekadon{ this.keys = {} } play(circle){ - if(circle.getType() == "don"){ - this.setKey(this.lr ? 86 : 66) - this.lr = !this.lr - }else if(circle.getType() == "daiDon"){ - this.setKey(86) - this.setKey(66) - this.lr = false - }else if(circle.getType() == "ka"){ - this.setKey(this.lr ? 67 : 78) - this.lr = !this.lr - }else if(circle.getType() == "daiKa"){ - this.setKey(67) - this.setKey(78) - this.lr = false + if(circle.getStatus() == 450){ + var kbd = this.controller.getBindings() + if(circle.getType() == "don"){ + this.setKey(this.lr ? kbd["don_l"] : kbd["don_r"]) + this.lr = !this.lr + }else if(circle.getType() == "daiDon"){ + this.setKey(kbd["don_l"]) + this.setKey(kbd["don_r"]) + this.lr = false + }else if(circle.getType() == "ka"){ + this.setKey(this.lr ? kbd["ka_l"] : kbd["ka_r"]) + this.lr = !this.lr + }else if(circle.getType() == "daiKa"){ + this.setKey(kbd["ka_l"]) + this.setKey(kbd["ka_r"]) + this.lr = false + } + var score = this.game.checkScore(circle); + circle.played(score); + this.game.updateCurrentCircle(); } - var score = this.game.checkScore(circle); - circle.played(score); - this.game.updateCurrentCircle(); } setKey(keyCode){ var self = this diff --git a/public/src/js/view.js b/public/src/js/view.js index 205cbd3..649d95a 100644 --- a/public/src/js/view.js +++ b/public/src/js/view.js @@ -267,23 +267,25 @@ function View(controller, bg, title, diff){ var keyRed = document.getElementById("taiko-key-red"); var keyBlue = document.getElementById("taiko-key-blue"); + var keys = controller.getKeys() + var kbd = controller.getBindings() - if(controller.getKeys()[67]){ + if(keys[kbd["ka_l"]]){ var elemW = 0.45*_taikoW; _ctx.drawImage(keyBlue, 0, 0, 68, 124, _taikoX+0.05*_taikoW, _taikoY+0.03*_taikoH, elemW, (124/68)*elemW); } - if(controller.getKeys()[86]){ + if(keys[kbd["don_l"]]){ var elemW = 0.35*_taikoW; _ctx.drawImage(keyRed, 0, 0, 53, 100, _taikoX+0.15*_taikoW, _taikoY+0.09*_taikoH, elemW, (100/53)*elemW); } - if(controller.getKeys()[66]){ + if(keys[kbd["don_r"]]){ var elemW = 0.35*_taikoW; _ctx.drawImage(keyRed, 53, 0, 53, 100, (_taikoX+0.15*_taikoW)+elemW, _taikoY+0.09*_taikoH, elemW, (100/53)*elemW); } - if(controller.getKeys()[78]){ + if(keys[kbd["ka_r"]]){ var elemW = 0.45*_taikoW; _ctx.drawImage(keyBlue, 68, 0, 68, 124, (_taikoX+0.05*_taikoW)+elemW, _taikoY+0.03*_taikoH, elemW, (124/68)*elemW); }