refactoring console ui
This commit is contained in:
+40
-37
@@ -1,6 +1,8 @@
|
||||
package game;
|
||||
|
||||
import game.ui.Console;
|
||||
import engine.enums.CVarFlag;
|
||||
import engine.typedefs.CCmd;
|
||||
import game.ui.console.Console;
|
||||
import game.video.Mode;
|
||||
import openfl.events.KeyboardEvent;
|
||||
import openfl.ui.Keyboard in Kb;
|
||||
@@ -11,29 +13,13 @@ import game.ui.ConVar;
|
||||
|
||||
|
||||
class Input{
|
||||
public static var keys:Array<Bool> = [];
|
||||
public static var keysLast:Array<Bool> = [];
|
||||
public static var keys:Map<Int,Bool> = [];
|
||||
public static var keysLast:Map<Int,Bool> = [];
|
||||
public static var bindMap:Map<String, String> = [];
|
||||
//public static var bind:CVar = Convar.registerCVar("bind",CVarType.cCmd, null, ()->{
|
||||
//
|
||||
//});
|
||||
public static var keyCodeMap:Map<String, Int> = [
|
||||
"HOME" => Kb.HOME, "END" => Kb.END, "INSERT" => Kb.INSERT, "DELETE" => Kb.DELETE, "PGUP" => Kb.PAGE_UP, "PGDN" => Kb.PAGE_DOWN,
|
||||
"ESC" => Kb.ESCAPE, "F1" => Kb.F1, "F2" => Kb.F2, "F3" => Kb.F3, "F4" => Kb.F4, "F5" => Kb.F5,
|
||||
"F6" => Kb.F6, "F7" => Kb.F7, "F8" => Kb.F8, "F9" => Kb.F9, "F10" => Kb.F10, "F11" => Kb.F11,
|
||||
"F12" => Kb.F12,
|
||||
"~" => Kb.BACKQUOTE, "1" => Kb.NUMBER_1, "2" => Kb.NUMBER_2, "3" => Kb.NUMBER_3, "4" => Kb.NUMBER_4, "5" => Kb.NUMBER_5,
|
||||
"6" => Kb.NUMBER_6, "7" => Kb.NUMBER_7, "8" => Kb.NUMBER_8, "9" => Kb.NUMBER_9, "0" => Kb.NUMBER_0,
|
||||
"TAB" => Kb.TAB, "Q" => Kb.Q, "W" => Kb.W, "E" => Kb.E, "R" => Kb.R, "T" => Kb.T,
|
||||
"Y" => Kb.Y, "U" => Kb.U, "I" => Kb.I, "O" => Kb.O, "P" => Kb.P, "[" => Kb.LEFTBRACKET,
|
||||
"]" => Kb.RIGHTBRACKET, "\\" => Kb.BACKSLASH,
|
||||
"CAPSLOCK" => Kb.CAPS_LOCK, "A" => Kb.A, "S" => Kb.S, "D" => Kb.D, "F" => Kb.F, "G" => Kb.G,
|
||||
"H" => Kb.H, "J" => Kb.J, "K" => Kb.K, "L" => Kb.L, "SEMICOLON" => Kb.SEMICOLON, "'" => Kb.QUOTE,
|
||||
"ENTER" => Kb.ENTER,
|
||||
"SHIFT" => Kb.SHIFT, "Z" => Kb.Z, "X" => Kb.X, "C" => Kb.C, "V" => Kb.V, "B" => Kb.B,
|
||||
"N" => Kb.N, "M" => Kb.M, "COMMA" => Kb.COMMA, "PERIOD" => Kb.PERIOD, "/" => Kb.SLASH ,
|
||||
"CTRL" => Kb.CONTROL, "ALT" => Kb.ALTERNATE
|
||||
];
|
||||
public static var cv_debugKeys = ConVar.registerCVar("cl_debuginput", CInt, 0, null, "print debug messages related to input to console", null, false, true, 0, 0, false);
|
||||
public static var keyNameMap:Map<Int, String> = [
|
||||
Kb.HOME => "HOME", Kb.END => "END", Kb.INSERT => "INSERT", Kb.DELETE => "DELETE", Kb.PAGE_UP => "PGUP", Kb.PAGE_DOWN => "PGDN",
|
||||
Kb.ESCAPE => "ESC", Kb.F1 => "F1", Kb.F2 => "F2", Kb.F3 => "F3", Kb.F4 => "F4", Kb.F5 => "F5",
|
||||
@@ -49,14 +35,28 @@ class Input{
|
||||
Kb.M => "M", Kb.COMMA => "COMMA",Kb.PERIOD => "PERIOD", Kb.SLASH => "/" ,
|
||||
Kb.CONTROL => "CTRL", Kb.ALTERNATE =>"ALT"
|
||||
];
|
||||
public static var keyCodeMap:Map<String, Int> = [
|
||||
for(key in keyNameMap.keys()){
|
||||
keyNameMap[key] => key;
|
||||
}
|
||||
];
|
||||
public static var cCmdGetKeyCode = ConVar.registerCCmd("getkey", (cArgs:Array<String>) -> {
|
||||
var keycode:Int = keyCodeMap[cArgs[0]];
|
||||
if(cArgs != null)
|
||||
Console.devMsg(Std.string(keycode));
|
||||
});
|
||||
public static function onKeyIsDown(e:KeyboardEvent){
|
||||
keys[e.charCode] = true;
|
||||
var key:String = keyNameMap[e.charCode];
|
||||
if(debugKeys.value > 0) Console.devMsg(""+key);
|
||||
if(!keys[e.keyCode]){
|
||||
if(cv_debugKeys.value > 0)
|
||||
Console.devMsg("triggered key: "+keyNameMap[e.keyCode]);
|
||||
}
|
||||
keys[e.keyCode] = true;
|
||||
var key:String = keyNameMap[e.keyCode];
|
||||
if(cv_debugKeys.value > 0) Console.devMsg(""+key);
|
||||
|
||||
}
|
||||
public static function onKeyIsUp(e:KeyboardEvent){
|
||||
keys[e.charCode] = false;
|
||||
keys[e.keyCode] = false;
|
||||
}
|
||||
public static function resolveKeyName(key:Int):String
|
||||
{
|
||||
@@ -76,23 +76,26 @@ class Input{
|
||||
// }
|
||||
public static function onEnterFrame()
|
||||
{
|
||||
if( keys[Kb.BACKQUOTE]){
|
||||
//Console.toggle();
|
||||
if(cv_debugKeys.value > 0) Console.devMsg("toggle console");
|
||||
|
||||
}
|
||||
if( keys[Kb.ALTERNATE] && keys[Kb.ENTER] && !keysLast[Kb.ALTERNATE] && !keysLast[Kb.ENTER] ){
|
||||
Mode.switchFsMode();
|
||||
}
|
||||
|
||||
if ( keys[Kb.ENTER] && !keysLast[Kb.ENTER] && !keysLast[Kb.ALTERNATE]){
|
||||
if(Lib.current.stage.focus == Console.consoleIndex.cIn){
|
||||
Console.consoleIndex.submitInput();
|
||||
// Console Input field is in focus
|
||||
if(Lib.current.stage.focus == Console.consoleInstance.cIn){
|
||||
if ( keys[Kb.ENTER] && !keysLast[Kb.ENTER] && !keysLast[Kb.ALTERNATE]){
|
||||
Console.consoleInstance.submitInput();
|
||||
}
|
||||
if (keys[Kb.UP] && !keysLast[Kb.UP]){
|
||||
Console.histPrev();
|
||||
}
|
||||
if (keys[Kb.DOWN] && !keysLast[Kb.DOWN]){
|
||||
Console.histNext();
|
||||
}
|
||||
}
|
||||
|
||||
for(i in 0...keys.length){
|
||||
keysLast[i] = keys[i];
|
||||
}
|
||||
//trace("enter pressed: " + keys[Kb.ENTER] + "enter pressed last: " + keysLast[Kb.ENTER]);
|
||||
//trace(keysLast[Kb.ENTER]);
|
||||
//keysLast = keys;
|
||||
//trace(keys[Kb.ENTER]);
|
||||
//trace(keysLast[Kb.ENTER]);
|
||||
keysLast = keys.copy();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user