public virtual void Init() { Globals.dedicated = Cvar.Get("dedicated", "0", Qcommon.CVAR_NOSET); Program.Q2Dialog = new Q2DataDialog(); Locale.SetDefault(Locale.US); Program.Q2Dialog.SetVisible(true); string DRIVER = "jsr231"; Qcommon.Init(new string [] { "TestRenderer", "+set", "gl_mode", "6", "+set", "vid_fullscreen", "0", "+set", "vid_ref", DRIVER }); VID.Shutdown(); String[] names = Renderer.GetDriverNames(); System.Diagnostics.Debug.WriteLine("Registered Drivers: " + Arrays.AsList(names)); this.re = Renderer.GetDriver(DRIVER); Globals.re = this.re; System.Diagnostics.Debug.WriteLine("Use driver: " + re); System.out_renamed.Flush(); re.Init(0, 0); kbd = re.GetKeyboardHandler(); kbd.Init(); Cmd.AddCommand("nexttest", nexttest); Cbuf.AddText("bind n nexttest"); Cbuf.Execute(); Globals.cls.key_dest = Defines.key_game; Globals.cls.state = Defines.ca_active; }
public virtual void Init() { Globals.dedicated = Cvar.Get("dedicated", "0", Qcommon.CVAR_NOSET); Program.Q2Dialog = new Q2DataDialog(); Locale.SetDefault(Locale.US); Program.Q2Dialog.SetVisible(true); string DRIVER = "lwjgl"; Qcommon.Init(new string { "DancingQueens", "+set", "gl_mode", "4", "+set", "vid_fullscreen", "0", "+set", "vid_ref", DRIVER }); VID.Shutdown(); String[] names = Renderer.GetDriverNames(); System.Diagnostics.Debug.WriteLine("Registered Drivers: " + Arrays.AsList(names)); this.re = Renderer.GetDriver(DRIVER); Globals.re = this.re; System.Diagnostics.Debug.WriteLine("Use driver: " + re); System.out_renamed.Flush(); re.Init(0, 0); kbd = re.GetKeyboardHandler(); kbd.Init(); Cbuf.AddText("unbind t"); Cbuf.Execute(); Cmd.AddCommand("togglemouse", togglemouse); Cbuf.AddText("bind t togglemouse"); Cbuf.Execute(); Globals.cls.key_dest = Defines.key_game; Globals.cls.state = Defines.ca_active; viddef = Globals.viddef; fov_y = Math3D.CalcFov(fov_x, viddef.GetWidth(), viddef.GetHeight()); }
public override void Execute( ) { SCR.EndLoadingPlaque(); if (Globals.cl.attractloop) { Cbuf.AddText("killserver\\n"); return; } if (Globals.cls.state == Defines.ca_disconnected) { Cbuf.AddText("d1\\n"); return; } Key.ClearTyping(); Con.ClearNotify(); if (Globals.cls.key_dest == Defines.key_console) { Menu.ForceMenuOff(); Cvar.Set("paused", "0"); } else { Menu.ForceMenuOff(); Globals.cls.key_dest = Defines.key_console; if (Cvar.VariableValue("maxclients") == 1 && Globals.server_state != 0) { Cvar.Set("paused", "1"); } } }
/** * Cmd_ExecuteString * * A complete command line has been parsed, so try to execute it * FIXME: lookupnoadd the token to speed search? */ public static void ExecuteString(string text) { cmd_function_t cmd; cmdalias_t a; Cmd.TokenizeString(text.ToCharArray(), true); // execute the command line if (Cmd.Argc() == 0) { return; // no tokens } // check functions for (cmd = Cmd.cmd_functions; cmd != null; cmd = cmd.next) { if (Cmd.cmd_argv[0].Equals(cmd.name, StringComparison.OrdinalIgnoreCase)) { if (null == cmd.function) { // forward to server command Cmd.ExecuteString("cmd " + text); } else { cmd.function(); } return; } } // check alias for (a = Globals.cmd_alias; a != null; a = a.next) { if (Cmd.cmd_argv[0].Equals(a.name, StringComparison.OrdinalIgnoreCase)) { if (++Globals.alias_count == Cmd.ALIAS_LOOP_COUNT) { Com.Printf("ALIAS_LOOP_COUNT\n"); return; } Cbuf.InsertText(a.value); return; } } // check cvars if (Cvar.Command()) { return; } // send it as a server command if we are connected Cmd.ForwardToServer(); }
public virtual void Run() { startTime = System.CurrentTimeMillis(); xcommand_t callback = new Anonymousxcommand_t(this); while (true) { re.UpdateScreen(callback); kbd.Update(); Cbuf.Execute(); } }
public static void SV_Begin_f( ) { Com.DPrintf("Begin() from " + SV_MAIN.sv_client.name + "\\n"); if (Lib.Atoi(Cmd.Argv(1)) != SV_INIT.svs.spawncount) { Com.Printf("SV_Begin_f from different level\\n"); SV_New_f(); return; } SV_MAIN.sv_client.state = Defines.cs_spawned; PlayerClient.ClientBegin(SV_USER.sv_player); Cbuf.InsertFromDefer(); }
public static void Message(int key) { if (key == K_ENTER || key == K_KP_ENTER) { if (Globals.chat_team) { Cbuf.AddText("say_team \\\""); } else { Cbuf.AddText("say \\\""); } Cbuf.AddText(Globals.chat_buffer); Cbuf.AddText("\\\"\\n"); Globals.cls.key_dest = Defines.key_game; Globals.chat_buffer = ""; return; } if (key == K_ESCAPE) { Globals.cls.key_dest = Defines.key_game; Globals.chat_buffer = ""; return; } if (key < 32 || key > 127) { return; } if (key == K_BACKSPACE) { if (Globals.chat_buffer.Length > 2) { Globals.chat_buffer = Globals.chat_buffer.Substring(0, Globals.chat_buffer.Length - 2); } else { Globals.chat_buffer = ""; } return; } if (Globals.chat_buffer.Length > Defines.MAXCMDLINE) { return; } Globals.chat_buffer += (char)key; }
public static void ExecuteString(String text) { cmd_function_t cmd; cmdalias_t a; TokenizeString(text.ToCharArray(), true); if (Argc() == 0) { return; } for (cmd = cmd_functions; cmd != null; cmd = cmd.next) { if (cmd_argv[0].EqualsIgnoreCase(cmd.name)) { if (null == cmd.function) { Cmd.ExecuteString("cmd " + text); } else { cmd.function.Execute(); } return; } } for (a = Globals.cmd_alias; a != null; a = a.next) { if (cmd_argv[0].EqualsIgnoreCase(a.name)) { if (++Globals.alias_count == ALIAS_LOOP_COUNT) { Com.Printf("ALIAS_LOOP_COUNT\\n"); return; } Cbuf.InsertText(a.value); return; } } if (Cvar.Command()) { return; } Cmd.ForwardToServer(); }
public virtual void Run() { startTime = System.CurrentTimeMillis(); xcommand_t callback = new Anonymousxcommand_t(this); while (true) { re.UpdateScreen(callback); kbd.Update(); Cbuf.Execute(); try { Thread.Sleep(5); } catch (Exception e) { } } }
public override void Execute( ) { if (Cmd.Argc() != 2) { Com.Printf("exec <filename> : execute a script file\\n"); return; } Byte[] f = null; f = FS.LoadFile(Cmd.Argv(1)); if (f == null) { Com.Printf("couldn't exec " + Cmd.Argv(1) + "\\n"); return; } Com.Printf("execing " + Cmd.Argv(1) + "\\n"); Cbuf.InsertText(Encoding.ASCII.GetString(f)); FS.FreeFile(f); }
public static void SV_Nextserver( ) { String v; if (SV_INIT.sv.state == Defines.ss_game || (SV_INIT.sv.state == Defines.ss_pic && 0 == Cvar.VariableValue("coop"))) { return; } SV_INIT.svs.spawncount++; v = Cvar.VariableString("nextserver"); if (v.Length == 0) { Cbuf.AddText("killserver\\n"); } else { Cbuf.AddText(v); Cbuf.AddText("\\n"); } Cvar.Set("nextserver", ""); }
public virtual void Init() { Globals.dedicated = Cvar.Get("dedicated", "0", Qcommon.CVAR_NOSET); if (Globals.dedicated.value != 1F) { Program.Q2Dialog = new Q2DataDialog(); Locale.SetDefault(Locale.US); Program.Q2Dialog.SetVisible(true); } Qcommon.Init(new string[] { "TestMap" }); VID.Shutdown(); Globals.re = this.re = Renderer.GetDriver("jsr231", true); re.Init(0, 0); Cmd.AddCommand("+tforward", forward_down); Cmd.AddCommand("-tforward", forward_up); Cbuf.AddText("bind UPARROW +tforward"); Cbuf.Execute(); Cmd.AddCommand("+tbackward", backward_down); Cmd.AddCommand("-tbackward", backward_up); Cbuf.AddText("bind DOWNARROW +tbackward"); Cbuf.Execute(); Cmd.AddCommand("+tleft", left_down); Cmd.AddCommand("-tleft", left_up); Cbuf.AddText("bind LEFTARROW +tleft"); Cbuf.Execute(); Cmd.AddCommand("+tright", right_down); Cmd.AddCommand("-tright", right_up); Cbuf.AddText("bind RIGHTARROW +tright"); Cbuf.Execute(); Cmd.AddCommand("togglemouse", togglemouse); Cbuf.AddText("bind t togglemouse"); Cbuf.Execute(); Globals.cls.key_dest = Defines.key_game; Globals.cls.state = Defines.ca_active; viddef = Globals.viddef; }
public virtual int SetMode(Size dim, int mode, bool fullscreen) { VID.Printf(Defines.PRINT_ALL, "Initializing OpenGL display\\n"); VID.Printf(Defines.PRINT_ALL, "...setting mode " + mode + ":"); unsafe { Monitor *device = GLFW.GetPrimaryMonitor(); if (oldDisplayMode == null) { oldDisplayMode = GLFW.GetVideoMode(device)[0]; } } if (!VID.GetModeInfo(out var newDim, mode)) { VID.Printf(Defines.PRINT_ALL, " invalid mode\\n"); return(Base.rserr_invalid_mode); } VID.Printf(Defines.PRINT_ALL, " " + newDim.Width + " " + newDim.Height + '\\'); Shutdown(); var newInstance = (window == null); if (!newInstance) { window.Dispose(); } window = new GameWindow(new GameWindowSettings(), new NativeWindowSettings { Title = "Q2Sharp (jogl)", Size = new OpenTK.Mathematics.Vector2i(newDim.Width, newDim.Height), StartVisible = false, WindowBorder = OpenTK.Windowing.Common.WindowBorder.Fixed, IsFullscreen = false //Icon = new OpenTK.Windowing.Common.Input.WindowIcon(new OpenTK.Windowing.Common.Input.Image(32,32,null)), }); window.RenderFrame += (t) => Program.Frame(); Program.RunWindow += () => window.Run(); //ImageIcon icon = new ImageIcon(GetType().GetResource("/icon-small.png")); Bitmap bitmap = (Bitmap)Bitmap.FromStream(GetType().Assembly.GetManifestResourceStream("/icon-small.png")); byte[] pixels = new byte[bitmap.Width * bitmap.Height]; for (int y = 0; y < bitmap.Height; y++) { for (int x = 0; x < bitmap.Width; x++) { var color = bitmap.GetPixel(x, y); Array.Copy(new byte[] { color.R, color.G, color.B, color.A }, 0, pixels, (y * bitmap.Width + x) * 4, 4); } } Image icon = new Image(bitmap.Width, bitmap.Height, pixels); window.Icon = new WindowIcon(icon); window.Minimized += (e) => JOGLKBD.listener.ComponentHidden(e); window.Maximized += (e) => { JOGLKBD.c = window; JOGLKBD.listener.ComponentShown(e); }; window.Move += (e) => JOGLKBD.listener.ComponentMoved(e); window.Closing += (e) => Cbuf.ExecuteText(Defines.EXEC_APPEND, "quit"); window.Resize += (e) => JOGLKBD.listener.ComponentResized(e); window.KeyDown += (e) => JOGLKBD.listener.KeyPressed(e); window.KeyUp += (e) => JOGLKBD.listener.KeyReleased(e); window.TextInput += (e) => JOGLKBD.listener.KeyTyped(e); window.MouseEnter += () => JOGLKBD.listener.MouseEntered(); window.MouseLeave += () => JOGLKBD.listener.MouseExited(); window.MouseMove += (e) => JOGLKBD.listener.MouseMoved(e); window.MouseDown += (e) => JOGLKBD.listener.MousePressed(e); window.MouseUp += (e) => JOGLKBD.listener.MouseReleased(e); window.MouseWheel += (e) => JOGLKBD.listener.MouseWheelMoved(e); //window.drag += ( e ) => JOGLKBD.listener.MouseDragged( e ); if (fullscreen) { window.WindowState = OpenTK.Windowing.Common.WindowState.Fullscreen; VideoMode VideoMode = FindDisplayMode(newDim); newDim.Width = VideoMode.Width; newDim.Height = VideoMode.Height; window.WindowState = WindowState.Fullscreen; if (window.IsFullscreen) { unsafe { GLFW.SetWindowSize(window.WindowPtr, VideoMode.Width, VideoMode.Height); } } window.Location = new OpenTK.Mathematics.Vector2i(); window.Size = new OpenTK.Mathematics.Vector2i(VideoMode.Width, VideoMode.Height); VID.Printf(Defines.PRINT_ALL, "...setting fullscreen " + GetModeString(VideoMode) + '\\'); window.IsVisible = true; } else { window.Location = new OpenTK.Mathematics.Vector2i(window_xpos, window_ypos); window.IsVisible = true; } Base.SetVid(newDim.Width, newDim.Height); VID.NewWindow(newDim.Width, newDim.Height); return(Base.rserr_ok); }
private static void QuitOnClose() { Program.UpdateLoop = null; Cbuf.ExecuteText(Defines.EXEC_APPEND, "quit"); }
public static void SV_Map(Boolean attractloop, String levelstring, Boolean loadgame) { Int32 l; String level, ch, spawnpoint; var pos = 0; sv.loadgame = loadgame; sv.attractloop = attractloop; if (sv.state == Defines.ss_dead && !sv.loadgame) { SV_InitGame(); } level = levelstring; var c = level.IndexOf('+'); if (c != -1) { Cvar.Set("nextserver", "gamemap \\\"" + level.Substring(c + 1) + "\\\""); level = level.Substring(0, c); } else { Cvar.Set("nextserver", ""); } if (firstmap.Length == 0) { if (!levelstring.EndsWith(".cin") && !levelstring.EndsWith(".pcx") && !levelstring.EndsWith(".dm2")) { pos = levelstring.IndexOf('+'); firstmap = levelstring.Substring(pos + 1); } } if (Cvar.VariableValue("coop") != 0 && level.Equals("victory.pcx")) { Cvar.Set("nextserver", "gamemap \\\"*" + firstmap + "\\\""); } pos = level.IndexOf('$'); if (pos != -1) { spawnpoint = level.Substring(pos + 1); level = level.Substring(0, pos); } else { spawnpoint = ""; } if (level[0] == '*') { level = level.Substring(1); } l = level.Length; if (l > 4 && level.EndsWith(".cin")) { SCR.BeginLoadingPlaque(); SV_SEND.SV_BroadcastCommand("changing\\n"); SV_SpawnServer(level, spawnpoint, Defines.ss_cinematic, attractloop, loadgame); } else if (l > 4 && level.EndsWith(".dm2")) { SCR.BeginLoadingPlaque(); SV_SEND.SV_BroadcastCommand("changing\\n"); SV_SpawnServer(level, spawnpoint, Defines.ss_demo, attractloop, loadgame); } else if (l > 4 && level.EndsWith(".pcx")) { SCR.BeginLoadingPlaque(); SV_SEND.SV_BroadcastCommand("changing\\n"); SV_SpawnServer(level, spawnpoint, Defines.ss_pic, attractloop, loadgame); } else { SCR.BeginLoadingPlaque(); SV_SEND.SV_BroadcastCommand("changing\\n"); SV_SEND.SV_SendClientMessages(); SV_SpawnServer(level, spawnpoint, Defines.ss_game, attractloop, loadgame); Cbuf.CopyToDefer(); } SV_SEND.SV_BroadcastCommand("reconnect\\n"); }
public static void ParseServerMessage( ) { while (true) { if (Globals.net_message.readcount > Globals.net_message.cursize) { Com.Error(Defines.ERR_FATAL, "CL_ParseServerMessage: Bad server message:"); break; } var cmd = MSG.ReadByte(Globals.net_message); if (cmd == -1) { SHOWNET("END OF MESSAGE"); break; } if (Globals.cl_shownet.value >= 2) { if (null == svc_strings[cmd]) { Com.Printf(Globals.net_message.readcount - 1 + ":BAD CMD " + cmd + "\\n"); } else { SHOWNET(svc_strings[cmd]); } } switch (cmd) { default: Com.Error(Defines.ERR_DROP, "CL_ParseServerMessage: Illegible server message\\n"); break; case Defines.svc_nop: break; case Defines.svc_disconnect: Com.Error(Defines.ERR_DISCONNECT, "Server disconnected\\n"); break; case Defines.svc_reconnect: Com.Printf("Server disconnected, reconnecting\\n"); if (Globals.cls.download != null) { try { Globals.cls.download.Close(); } catch (IOException e) { } Globals.cls.download = null; } Globals.cls.state = Defines.ca_connecting; Globals.cls.connect_time = -99999; break; case Defines.svc_print: var i = MSG.ReadByte(Globals.net_message); if (i == Defines.PRINT_CHAT) { S.StartLocalSound("misc/talk.wav"); Globals.con.ormask = 128; } Com.Printf(MSG.ReadString(Globals.net_message)); Globals.con.ormask = 0; break; case Defines.svc_centerprint: SCR.CenterPrint(MSG.ReadString(Globals.net_message)); break; case Defines.svc_stufftext: var s = MSG.ReadString(Globals.net_message); Com.DPrintf("stufftext: " + s + "\\n"); Cbuf.AddText(s); break; case Defines.svc_serverdata: Cbuf.Execute(); ParseServerData(); break; case Defines.svc_configstring: ParseConfigString(); break; case Defines.svc_sound: ParseStartSoundPacket(); break; case Defines.svc_spawnbaseline: ParseBaseline(); break; case Defines.svc_temp_entity: CL_tent.ParseTEnt(); break; case Defines.svc_muzzleflash: CL_fx.ParseMuzzleFlash(); break; case Defines.svc_muzzleflash2: CL_fx.ParseMuzzleFlash2(); break; case Defines.svc_download: ParseDownload(); break; case Defines.svc_frame: CL_ents.ParseFrame(); break; case Defines.svc_inventory: CL_inv.ParseInventory(); break; case Defines.svc_layout: Globals.cl.layout = MSG.ReadString(Globals.net_message); break; case Defines.svc_playerinfo: case Defines.svc_packetentities: case Defines.svc_deltapacketentities: Com.Error(Defines.ERR_DROP, "Out of place frame data"); break; } } CL_view.AddNetgraph(); if (Globals.cls.demorecording && !Globals.cls.demowaiting) { CL.WriteDemoMessage(); } }
public static void Event(int key, bool down, int time) { string kb; string cmd; if (key_waiting == -1) { if (down) { key_waiting = key; } return; } if (down) { key_repeats[key]++; if (key_repeats[key] > 1 && Globals.cls.key_dest == Defines.key_game && !(Globals.cls.state == Defines.ca_disconnected)) { return; } if (key >= 200 && Globals.keybindings[key] == null) { Com.Printf(Key.KeynumToString(key) + " is unbound, hit F4 to set.\\n"); } } else { key_repeats[key] = 0; } if (key == K_SHIFT) { shift_down = down; } if (key == '`' || key == '~') { if (!down) { return; } Con.ToggleConsole_f.Execute(); return; } if (Globals.cl.attractloop && Globals.cls.key_dest != Defines.key_menu && !(key >= K_F1 && key <= K_F12)) { key = K_ESCAPE; } if (key == K_ESCAPE) { if (!down) { return; } if (Globals.cl.frame.playerstate.stats[Defines.STAT_LAYOUTS] != 0 && Globals.cls.key_dest == Defines.key_game) { Cbuf.AddText("cmd putaway\\n"); return; } switch (Globals.cls.key_dest) { case Defines.key_message: Key.Message(key); break; case Defines.key_menu: Menu.Keydown(key); break; case Defines.key_game: case Defines.key_console: Menu.Menu_Main_f(); break; default: Com.Error(Defines.ERR_FATAL, "Bad cls.key_dest"); break; } return; } Globals.keydown[key] = down; if (down) { if (key_repeats[key] == 1) { Key.anykeydown++; } } else { Key.anykeydown--; if (Key.anykeydown < 0) { Key.anykeydown = 0; } } if (!down) { kb = Globals.keybindings[key]; if (kb != null && kb.Length > 0 && kb[0] == '+') { cmd = "-" + kb.Substring(1) + " " + key + " " + time + "\\n"; Cbuf.AddText(cmd); } return; } if ((Globals.cls.key_dest == Defines.key_menu && menubound[key]) || (Globals.cls.key_dest == Defines.key_console && !consolekeys[key]) || (Globals.cls.key_dest == Defines.key_game && (Globals.cls.state == Defines.ca_active || !consolekeys[key]))) { kb = Globals.keybindings[key]; if (kb != null) { if (kb.Length > 0 && kb[0] == '+') { cmd = kb + " " + key + " " + time + "\\n"; Cbuf.AddText(cmd); } else { Cbuf.AddText(kb + "\\n"); } } return; } if (!down) { return; } switch (Globals.cls.key_dest) { case Defines.key_message: Key.Message(key); break; case Defines.key_menu: Menu.Keydown(key); break; case Defines.key_game: case Defines.key_console: Key.Console(key); break; default: Com.Error(Defines.ERR_FATAL, "Bad cls.key_dest"); break; } }
/** * Called by the system between frames for both key up and key down events. */ public static void Event(int key, bool down, int time) { string kb; string cmd; // hack for modal presses if (Key.key_waiting == -1) { if (down) { Key.key_waiting = key; } return; } // update auto-repeat status if (down) { Key.key_repeats[key]++; if (Key.key_repeats[key] > 1 && Globals.cls.key_dest == Defines.key_game && !(Globals.cls.state == Defines.ca_disconnected)) { return; // ignore most autorepeats } if (key >= 200 && Globals.keybindings[key] == null) { Com.Printf(Key.KeynumToString(key) + " is unbound, hit F4 to set.\n"); } } else { Key.key_repeats[key] = 0; } if (key == Key.K_SHIFT) { Key.shift_down = down; } // console key is hardcoded, so the user can never unbind it if (key == '`' || key == '~') { if (!down) { return; } client.Console.ToggleConsole_f(); return; } // any key during the attract mode will bring up the menu if (Globals.cl.attractloop && Globals.cls.key_dest != Defines.key_menu && !(key >= Key.K_F1 && key <= Key.K_F12)) { key = Key.K_ESCAPE; } // menu key is hardcoded, so the user can never unbind it if (key == Key.K_ESCAPE) { if (!down) { return; } if (Globals.cl.frame.playerstate.stats[Defines.STAT_LAYOUTS] != 0 && Globals.cls.key_dest == Defines.key_game) { // put away help computer / inventory Cbuf.AddText("cmd putaway\n"); return; } switch (Globals.cls.key_dest) { case Defines.key_message: Key.Message(key); break; case Defines.key_menu: Menu.Keydown(key); break; case Defines.key_game: case Defines.key_console: Menu.Menu_Main_f(); break; default: Com.Error(Defines.ERR_FATAL, "Bad cls.key_dest"); break; } return; } // track if any key is down for BUTTON_ANY Globals.keydown[key] = down; if (down) { if (Key.key_repeats[key] == 1) { Key.anykeydown++; } } else { Key.anykeydown--; if (Key.anykeydown < 0) { Key.anykeydown = 0; } } // // key up events only generate commands if the game key binding is // a button command (leading + sign). These will occur even in console mode, // to keep the character from continuing an action started before a console // switch. Button commands include the kenum as a parameter, so multiple // downs can be matched with ups // if (!down) { kb = Globals.keybindings[key]; if (kb != null && kb.Length > 0 && kb[0] == '+') { cmd = "-" + kb[1..] + " " + key + " " + time + "\n";
public static void Console(int key) { switch (key) { case K_KP_SLASH: key = '/'; break; case K_KP_MINUS: key = '-'; break; case K_KP_PLUS: key = '+'; break; case K_KP_HOME: key = '7'; break; case K_KP_UPARROW: key = '8'; break; case K_KP_PGUP: key = '9'; break; case K_KP_LEFTARROW: key = '4'; break; case K_KP_5: key = '5'; break; case K_KP_RIGHTARROW: key = '6'; break; case K_KP_END: key = '1'; break; case K_KP_DOWNARROW: key = '2'; break; case K_KP_PGDN: key = '3'; break; case K_KP_INS: key = '0'; break; case K_KP_DEL: key = '.'; break; } if (key == 'l') { if (Globals.keydown[K_CTRL]) { Cbuf.AddText("clear\\n"); return; } } if (key == K_ENTER || key == K_KP_ENTER) { if (Globals.key_lines[Globals.edit_line][1] == '\\' || Globals.key_lines[Globals.edit_line][1] == '/') { Cbuf.AddText(Encoding.ASCII.GetString(Globals.key_lines[Globals.edit_line], 2, Lib.Strlen(Globals.key_lines[Globals.edit_line]) - 2)); } else { Cbuf.AddText(Encoding.ASCII.GetString(Globals.key_lines[Globals.edit_line], 1, Lib.Strlen(Globals.key_lines[Globals.edit_line]) - 1)); } Cbuf.AddText("\\n"); Com.Printf(Encoding.ASCII.GetString(Globals.key_lines[Globals.edit_line], 0, Lib.Strlen(Globals.key_lines[Globals.edit_line])) + "\\n"); Globals.edit_line = (Globals.edit_line + 1) & 31; history_line = Globals.edit_line; Globals.key_lines[Globals.edit_line][0] = (byte)']'; Globals.key_linepos = 1; if (Globals.cls.state == Defines.ca_disconnected) { SCR.UpdateScreen(); } return; } if (key == K_TAB) { CompleteCommand(); return; } if ((key == K_BACKSPACE) || (key == K_LEFTARROW) || (key == K_KP_LEFTARROW) || ((key == 'h') && (Globals.keydown[K_CTRL]))) { if (Globals.key_linepos > 1) { Globals.key_linepos--; } return; } if ((key == K_UPARROW) || (key == K_KP_UPARROW) || ((key == 'p') && Globals.keydown[K_CTRL])) { do { history_line = (history_line - 1) & 31; }while (history_line != Globals.edit_line && Globals.key_lines[history_line][1] == 0); if (history_line == Globals.edit_line) { history_line = (Globals.edit_line + 1) & 31; } System.Array.Copy(Globals.key_lines[history_line], 0, Globals.key_lines[Globals.edit_line], 0, Globals.key_lines[Globals.edit_line].Length); Globals.key_linepos = Lib.Strlen(Globals.key_lines[Globals.edit_line]); return; } if ((key == K_DOWNARROW) || (key == K_KP_DOWNARROW) || ((key == 'n') && Globals.keydown[K_CTRL])) { if (history_line == Globals.edit_line) { return; } do { history_line = (history_line + 1) & 31; }while (history_line != Globals.edit_line && Globals.key_lines[history_line][1] == 0); if (history_line == Globals.edit_line) { Globals.key_lines[Globals.edit_line][0] = (byte)']'; Globals.key_linepos = 1; } else { System.Array.Copy(Globals.key_lines[history_line], 0, Globals.key_lines[Globals.edit_line], 0, Globals.key_lines[Globals.edit_line].Length); Globals.key_linepos = Lib.Strlen(Globals.key_lines[Globals.edit_line]); } return; } if (key == K_PGUP || key == K_KP_PGUP) { Globals.con.display -= 2; return; } if (key == K_PGDN || key == K_KP_PGDN) { Globals.con.display += 2; if (Globals.con.display > Globals.con.current) { Globals.con.display = Globals.con.current; } return; } if (key == K_HOME || key == K_KP_HOME) { Globals.con.display = Globals.con.current - Globals.con.totallines + 10; return; } if (key == K_END || key == K_KP_END) { Globals.con.display = Globals.con.current; return; } if (key < 32 || key > 127) { return; } if (Globals.key_linepos < Defines.MAXCMDLINE - 1) { Globals.key_lines[Globals.edit_line][Globals.key_linepos] = (byte)key; Globals.key_linepos++; Globals.key_lines[Globals.edit_line][Globals.key_linepos] = 0; } }
private void HandleEvents() { var keyboardState = JOGLKBD.c.KeyboardState; if (keyboardState == null) { Cbuf.ExecuteText(Defines.EXEC_APPEND, "quit"); } var snapshot = keyboardState.GetSnapshot(); while (LastKeyboardState != snapshot) { int key = Keyboard.GetEventKey(); char ch = Keyboard.GetEventCharacter(); bool down = Keyboard.GetEventKeyState(); if (down) { lwjglKeycodeMap[key] = ch; pressed[key] = Globals.sys_frame_time; } else { pressed[key] = 0; } Do_Key_Event(XLateKey(key, ch), down); LastKeyboardState = snapshot; } GenerateRepeats(); if (IN.mouse_active) { mx = Mouse.GetDX() << 1; my = -Mouse.GetDY() << 1; } else { mx = 0; my = 0; } while (Mouse.Next()) { int button = Mouse.GetEventButton(); if (button >= 0) { Do_Key_Event(Key.K_MOUSE1 + button, Mouse.GetEventButtonState()); } else { button = Mouse.GetEventDWheel(); if (button > 0) { Do_Key_Event(Key.K_MWHEELUP, true); Do_Key_Event(Key.K_MWHEELUP, false); } else if (button < 0) { Do_Key_Event(Key.K_MWHEELDOWN, true); Do_Key_Event(Key.K_MWHEELDOWN, false); } } } }
// add commands to the server console as if they were typed in // for map changing, etc public void AddCommandString(string text) { Cbuf.AddText(text); }
public void WindowClosing(WindowEvent e) { Cbuf.ExecuteText(Defines.EXEC_APPEND, "quit"); }