visual-js
Version:
[3.0.26] Prepare for npm usage. Special integration for matrix engine 1.9.0 Thunder.
296 lines (229 loc) • 8.62 kB
JavaScript
import {remove_last} from "../init";
import SYS from "../system";
import KeyboardListener from "./keyboard_editor";
// PLAYER CONTROL AND OTHER KEYBOARD STAFF
export function KEYBOARD(c) {
var ROOT = this;
ROOT.CAPTURE_CHAR = "";
ROOT.CLEAR_CAPTURE_ON_PRESS_ENTER = true;
ROOT.LAST_CAPTURE_CHAR = "";
ROOT.ENTER_PRESSED = false;
ROOT.SHIFT_PRESSED = false;
ROOT.ACTION_ON_KEY_DOWN = function() {};
this.CANVAS = c;
this.PROGRAM_NAME = c.id;
ROOT.keyboardListener = new KeyboardListener();
c.addEventListener("keydown", function(e) {
switch(e.keyCode) {
case 8:
e.preventDefault();
SYS.DEBUG.LOG("prevent default for backspace.");
}
SYS.DEBUG.LOG(" GAME RUNNING , key pressed: " + e.keyCode);
if(typeof PLAYER != "undefined") {
if(PLAYER.TYPE == "NORMAL") {
switch(e.keyCode) {
case 121:
SYS.DEBUG.LOG("F10 command -->> Show command line ");
case 69:
case 37: // left
PLAYER.X = PLAYER.X - PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_X(PLAYER.X);
break;
case 38: // up
PLAYER.Y = PLAYER.Y - PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_Y(PLAYER.Y);
break;
case 39: // right
PLAYER.X = PLAYER.X + PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_X(PLAYER.X);
break;
case 40: // down
PLAYER.Y = PLAYER.Y + PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_Y(PLAYER.Y);
break;
}
}
}
// SPECIAL FOR TEXTBOX
SYS.DEBUG.LOG("KEYBOARD-->> Show users types : " + e.keyCode);
var keynum;
if(window.event) {
keynum = e.keyCode;
} else {
if(e.which) {
keynum = e.which;
}
}
//console.log(String.fromCharCode(keynum));
if(e.keyCode == 16) {
ROOT.SHIFT_PRESSED = true;
}
if(e.keyCode == 8) {
SYS.DEBUG.LOG("textbox delete last char!");
ROOT.CAPTURE_CHAR = remove_last(ROOT.CAPTURE_CHAR);
} else if(e.keyCode == 13) {
ROOT.ENTER_PRESSED = true;
} else {
if(ROOT.SHIFT_PRESSED == false) {
if(e.keyCode == 189) {
ROOT.CAPTURE_CHAR += "_";
ROOT.LAST_CAPTURE_CHAR = "_";
} else if(e.keyCode == 187) {
ROOT.CAPTURE_CHAR += "+";
ROOT.LAST_CAPTURE_CHAR = "+";
} else if(e.keyCode == 187) {
ROOT.CAPTURE_CHAR += "+";
ROOT.LAST_CAPTURE_CHAR = "+";
} else if(e.keyCode == 188) {
ROOT.CAPTURE_CHAR += ",";
ROOT.LAST_CAPTURE_CHAR = ",";
} else if(e.keyCode == 190) {
ROOT.CAPTURE_CHAR += ".";
ROOT.LAST_CAPTURE_CHAR = ".";
} else if(e.keyCode == 191) {
ROOT.CAPTURE_CHAR += "/";
ROOT.LAST_CAPTURE_CHAR = "/";
} else if(e.keyCode == 186) {
ROOT.CAPTURE_CHAR += ";";
ROOT.LAST_CAPTURE_CHAR = ";";
} else if(e.keyCode == 222) {
ROOT.CAPTURE_CHAR += "'";
ROOT.LAST_CAPTURE_CHAR = "'";
} else if(e.keyCode == 220) {
ROOT.CAPTURE_CHAR += "\\";
ROOT.LAST_CAPTURE_CHAR = "\\";
} else if(e.keyCode == 219) {
ROOT.CAPTURE_CHAR += "[";
ROOT.LAST_CAPTURE_CHAR = "[";
} else if(e.keyCode == 221) {
ROOT.CAPTURE_CHAR += "]";
ROOT.LAST_CAPTURE_CHAR = "]";
} else {
ROOT.CAPTURE_CHAR += (String.fromCharCode(keynum).toLowerCase());
ROOT.LAST_CAPTURE_CHAR = (String.fromCharCode(keynum).toLowerCase());
}
} else {
if(e.keyCode == 50) {
ROOT.CAPTURE_CHAR += "@";
ROOT.LAST_CAPTURE_CHAR = "@";
} else if(e.keyCode == 49) {
ROOT.CAPTURE_CHAR += "!";
ROOT.LAST_CAPTURE_CHAR = "!";
} else if(e.keyCode == 51) {
ROOT.CAPTURE_CHAR += "#";
ROOT.LAST_CAPTURE_CHAR = "#";
} else if(e.keyCode == 52) {
ROOT.CAPTURE_CHAR += "$";
ROOT.LAST_CAPTURE_CHAR = "$";
} else if(e.keyCode == 53) {
ROOT.CAPTURE_CHAR += "%";
ROOT.LAST_CAPTURE_CHAR = "%";
} else if(e.keyCode == 54) {
ROOT.CAPTURE_CHAR += "^";
ROOT.LAST_CAPTURE_CHAR = "^";
} else if(e.keyCode == 55) {
ROOT.CAPTURE_CHAR += "&";
ROOT.LAST_CAPTURE_CHAR = "&";
} else if(e.keyCode == 56) {
ROOT.CAPTURE_CHAR += "*";
ROOT.LAST_CAPTURE_CHAR = "*";
} else if(e.keyCode == 57) {
ROOT.CAPTURE_CHAR += "(";
ROOT.LAST_CAPTURE_CHAR = "(";
} else if(e.keyCode == 48) {
ROOT.CAPTURE_CHAR += ")";
ROOT.LAST_CAPTURE_CHAR = ")";
} else if(e.keyCode == 189) {
ROOT.CAPTURE_CHAR += "_";
ROOT.LAST_CAPTURE_CHAR = "_";
} else if(e.keyCode == 187) {
ROOT.CAPTURE_CHAR += "+";
ROOT.LAST_CAPTURE_CHAR = "+";
} else if(e.keyCode == 187) {
ROOT.CAPTURE_CHAR += "+";
ROOT.LAST_CAPTURE_CHAR = "+";
} else if(e.keyCode == 188) {
ROOT.CAPTURE_CHAR += "<";
ROOT.LAST_CAPTURE_CHAR = "<";
} else if(e.keyCode == 190) {
ROOT.CAPTURE_CHAR += ">";
ROOT.LAST_CAPTURE_CHAR = ">";
} else if(e.keyCode == 191) {
ROOT.CAPTURE_CHAR += "?";
ROOT.LAST_CAPTURE_CHAR = "?";
} else if(e.keyCode == 186) {
ROOT.CAPTURE_CHAR += ":";
ROOT.LAST_CAPTURE_CHAR = ":";
} else if(e.keyCode == 222) {
ROOT.CAPTURE_CHAR += "\"";
ROOT.LAST_CAPTURE_CHAR = "\"";
} else if(e.keyCode == 220) {
ROOT.CAPTURE_CHAR += "|";
ROOT.LAST_CAPTURE_CHAR = "|";
} else if(e.keyCode == 219) {
ROOT.CAPTURE_CHAR += "{";
ROOT.LAST_CAPTURE_CHAR = "{";
} else if(e.keyCode == 221) {
ROOT.CAPTURE_CHAR += "}";
ROOT.LAST_CAPTURE_CHAR = "}";
} else {
ROOT.CAPTURE_CHAR += (String.fromCharCode(keynum).toUpperCase());
ROOT.LAST_CAPTURE_CHAR = (String.fromCharCode(keynum).toUpperCase());
}
}
}
ROOT.ACTION_ON_KEY_DOWN();
//@@@@@@@@@@@@@@@@@@@@@@@@@
if(typeof ROOT.TARGET_MODUL != "undefined" && typeof ROOT.TARGET != "undefined") {
ROOT.CAPTURE_CHAR = ROOT.CAPTURE_CHAR.replace(/[^\x00-\x7F]/g, "");
ROOT.CAPTURE_CHAR = ROOT.CAPTURE_CHAR.replace(/[^A-Za-z 0-9 \.,\?""!#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, "");
window[ROOT.PROGRAM_NAME].ENGINE.MODULES.ACCESS(ROOT.TARGET_MODUL).GAME_OBJECTS.ACCESS(ROOT.TARGET).TEXTBOX.TEXT = ROOT.CAPTURE_CHAR;
if(ROOT.ENTER_PRESSED == true) {
window[ROOT.PROGRAM_NAME].ENGINE.MODULES.ACCESS(ROOT.TARGET_MODUL).GAME_OBJECTS.ACCESS(ROOT.TARGET).TEXTBOX.ON_PRESS_ENTER();
if(ROOT.CLEAR_CAPTURE_ON_PRESS_ENTER == true) {
ROOT.CAPTURE_CHAR = "";
}
}
}
ROOT.ENTER_PRESSED = false;
//local_go.TEXTBOX.TEXT = ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.CAPTURE_CHAR;
}, false);
c.addEventListener("keyup", function(e) {
SYS.DEBUG.LOG(" GAME RUNNING , key up : " + e.keyCode);
//SYS.SOUND.GEN( 50 , e.keyCode * 20 );
switch(e.keyCode) {
case 121:
SYS.DEBUG.LOG("F10 command -->> Show command line ");
break;
case 16:
ROOT.SHIFT_PRESSED = false;
break;
}
if(typeof PLAYER != "undefined") {
if(PLAYER.TYPE == "NORMAL") {
switch(e.keyCode) {
case 121:
SYS.DEBUG.LOG("F10 command -->> Show command line ");
case 69:
case 37: // left
PLAYER.X = PLAYER.X - PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_X(PLAYER.X);
break;
case 38: // up
PLAYER.Y = PLAYER.Y - PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_Y(PLAYER.Y);
break;
case 39: // right
PLAYER.X = PLAYER.X + PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_X(PLAYER.X);
break;
case 40: // down
PLAYER.Y = PLAYER.Y + PLAYER.SPEED;
PLAYER.POSITION.TRANSLATE_BY_Y(PLAYER.Y);
break;
}
}
}
}, false);
}