implemented cvar, ccmd and parsing console input

This commit is contained in:
2025-01-15 19:44:59 +01:00
committed by andreas
parent f3640412bb
commit 194e7014e9
10 changed files with 324 additions and 42 deletions
+24 -8
View File
@@ -1,12 +1,14 @@
package game;
import engine.enums.CVarFlag;
import engine.typedefs.CCmd;
import game.ui.Console;
import game.video.Mode;
import openfl.events.KeyboardEvent;
import openfl.ui.Keyboard in Kb;
import openfl.Lib;
import game.ui.CVarType;
import game.ui.CVar;
import engine.enums.CVarType;
import engine.typedefs.CVar;
import game.ui.ConVar;
@@ -17,6 +19,7 @@ class Input{
//public static var bind:CVar = Convar.registerCVar("bind",CVarType.cCmd, null, ()->{
//
//});
public static var 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 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,
@@ -51,6 +54,9 @@ class Input{
];
public static function onKeyIsDown(e:KeyboardEvent){
keys[e.charCode] = true;
var key:String = keyNameMap[e.charCode];
if(debugKeys.value > 0) Console.devMsg(""+key);
}
public static function onKeyIsUp(e:KeyboardEvent){
keys[e.charCode] = false;
@@ -71,21 +77,31 @@ class Input{
// }
// }
private static var bind:CCmd = ConVar.registerCCmd("bind", (cArgs:Array<String>)->{
ConVar.runCmd("echo",cArgs);
});
public static function onEnterFrame()
{
if( keys[Kb.BACKQUOTE]){
//Console.toggle();
if(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();
if(Lib.current.stage.focus == Console.consoleInstance.cIn){
Console.consoleInstance.submitInput();
}
}
for(i in 0...keys.length){
keysLast[i] = keys[i];
}
keysLast = keys.copy();
//Console.devMsg("key array length:"+keys.length);
//for(i in 0...keys.length-1){
// keysLast[i] = keys[i];
//}
//trace("enter pressed: " + keys[Kb.ENTER] + "enter pressed last: " + keysLast[Kb.ENTER]);
//trace(keysLast[Kb.ENTER]);
//keysLast = keys;