nodePong/client/lib/keyboard/event_handler.js

135 lines
3.4 KiB
JavaScript

/**
* @file event_handling.js
* @autour frtk@tetalab
*/
NPGClient.evtHandler = {
keyState: {},
//
init: function() {
var self = this;
//
self.keyState = {};
for (k in NPGClient.KEYS) {
self.keyState[NPGClient[k]] = false;
}
//
document.addEventListener('keydown',function(e) {
self.keyState[e.keyCode || e.which] = true;
self.onKeyDown(e);
}, true);
//
document.addEventListener('keyup',function(e){
self.keyState[e.keyCode || e.which] = false;
}, true);
},
//
isValidKey: function(k) {
return (k >= 48 && k <= 90);
},
//
onKeyDown: function(evt) {
var self = this;
if (evt.keyCode == NPGClient.KEYS.ESC) {
//self.playerLogout(); // player logout
} else if (evt.keyCode == NPGClient.KEYS.F1) {
//self.sendToMenuPage(); // back to previous page
} else {
switch (NPGClient.PageHandler.currPage) {
case NPGClient.LOGIN.NAME:
self.userLogin(evt);
break;
case NPGClient.STARTMENU.NAME:
self.startMenu(evt);
break;
default:
break;
}
}
},
/*
*
*/
//
userLogin : function (evt) {
var self = this;
//
switch (evt.keyCode) {
case NPGClient.KEYS.ENTER:
if (NPGClient.SocketIO.isConnected) {
if (NPGClient.userName.length != 0) {
NPGClient.SocketIO.sendMsg('regRequest', NPGClient.userName);
}
} else {
NPGClient.Utils.resetName();
NPGClient.PageHandler.getCurrPageUIElemByName('login_cursor').reset();
}
break;
case NPGClient.KEYS.BACKSPACE:
//--- remove a character
evt.preventDefault();
if (!NPGClient.Utils.nameEmpty()) {
NPGClient.Utils.removeChar();
NPGClient.PageHandler.getCurrPageUIElemByName('login_cursor').translateX(-15);
NPGClient.PageHandler.getCurrPageUIElemByName('login_cursor').resetBlink();
}
break;
default:
//--- add character
if (self.isValidKey(evt.keyCode) && !NPGClient.Utils.maxNameSize()) {
NPGClient.Utils.addChar(evt.keyCode);
newNameW = NPGClient.ui.ctx.measureText(NPGClient.userName).width;
NPGClient.PageHandler.getCurrPageUIElemByName('login_cursor').translateX(15);
NPGClient.PageHandler.getCurrPageUIElemByName('login_cursor').resetBlink();
}
break;
}
},
/*
*
*/
//
startMenu : function(evt) {
var self = this;
switch (evt.keyCode) {
case NPGClient.KEYS.ARROW_DOWN :
NPGClient.PageHandler.getCurrPageUIElemByName(NPGClient.STARTMENU.MENU.name).selectNextItem();
break;
case NPGClient.KEYS.ARROW_UP :
NPGClient.PageHandler.getCurrPageUIElemByName(NPGClient.STARTMENU.MENU.name).selectPrevItem();
break;
case NPGClient.KEYS.ENTER :
//
/*
switch (self.cursor.menuItemRef.NAME) {
case 'CREATE':
self.socket.emit('createGame');
break;
case 'JOIN':
self.socket.emit('joinGameMenu');
break;
case 'WATCH':
self.socket.emit('watchGameMenu');
break;
default:
break;
}
break;
*/
default:
break;
}
},
}