public static void ExecuteText(int exec_when, string text) { switch (exec_when) { case Defines.EXEC_NOW: Cmd.ExecuteString(text); break; case Defines.EXEC_INSERT: Cbuf.InsertText(text); break; case Defines.EXEC_APPEND: Cbuf.AddText(text); break; default: Com.Error(Defines.ERR_FATAL, "Cbuf_ExecuteText: bad exec_when"); break; } }
private static void reconfigure(bool clear) { Cbuf.AddText("exec default.cfg\n"); Cbuf.AddText("bind MWHEELUP weapnext\n"); Cbuf.AddText("bind MWHEELDOWN weapprev\n"); Cbuf.AddText("bind w +forward\n"); Cbuf.AddText("bind s +back\n"); Cbuf.AddText("bind a +moveleft\n"); Cbuf.AddText("bind d +moveright\n"); Cbuf.Execute(); Cvar.Set("vid_fullscreen", "0"); Cbuf.AddText("exec config.cfg\n"); Cbuf.AddEarlyCommands(clear); Cbuf.Execute(); }
public static void InsertText(string text) { var templen = 0; // copy off any commands still remaining in the exec buffer templen = Globals.cmd_text.cursize; if (templen != 0) { Array.Copy(Globals.cmd_text.data, 0, Cbuf.tmp, 0, templen); SZ.Clear(Globals.cmd_text); } // add the entire text of the file Cbuf.AddText(text); // add the copied off data if (templen != 0) { SZ.Write(Globals.cmd_text, Cbuf.tmp, templen); } }
/** * @param clear */ public static void AddEarlyCommands(bool clear) { for (var i = 0; i < Com.Argc(); i++) { var s = Com.Argv(i); if (!s.Equals("+set")) { continue; } Cbuf.AddText("set " + Com.Argv(i + 1) + " " + Com.Argv(i + 2) + "\n"); if (clear) { Com.ClearArgv(i); Com.ClearArgv(i + 1); Com.ClearArgv(i + 2); } i += 2; } }
/** * @return */ public static bool AddLateCommands() { int i; int j; var ret = false; // build the combined string to parse from var s = 0; var argc = Com.Argc(); for (i = 1; i < argc; i++) { s += Com.Argv(i).Length; } if (s == 0) { return(false); } var text = ""; for (i = 1; i < argc; i++) { text += Com.Argv(i); if (i != argc - 1) { text += " "; } } // pull out the commands var build = ""; for (i = 0; i < text.Length; i++) { if (text[i] == '+') { i++; for (j = i; j < text.Length && text[j] != '+' && text[j] != '-'; j++) { ; } build += text.Substring(i, j - i); build += "\n"; i = j - 1; } } ret = build.Length != 0; if (ret) { Cbuf.AddText(build); } text = null; build = null; return(ret); }
/** * This function initializes the different subsystems of * the game engine. The setjmp/longjmp mechanism of the original * was replaced with exceptions. * @param args the original unmodified command line arguments */ public static void Init(string[] args) { try { // prepare enough of the subsystems to handle // cvar and command buffer management Com.InitArgv(args); Cbuf.Init(); Cmd.Init(); Cvar.Init(); Key.Init(); // we need to add the early commands twice, because // a basedir or cddir needs to be set before execing // config files, but we want other parms to override // the settings of the config files Cbuf.AddEarlyCommands(false); Cbuf.Execute(); if (Globals.dedicated.value != 1.0f) { Console.WriteLine("initializing filesystem..."); } FS.InitFilesystem(); if (Globals.dedicated.value != 1.0f) { Console.WriteLine("loading config..."); } Qcommon.reconfigure(false); FS.markBaseSearchPaths(); // mark the default search paths Qcommon.reconfigure(true); // reload default.cfg and config.cfg // // init commands and vars // Cmd.AddCommand("error", Com.Error_f); Globals.host_speeds = Cvar.Get("host_speeds", "0", 0); Globals.log_stats = Cvar.Get("log_stats", "0", 0); Globals.developer = Cvar.Get("developer", "0", Defines.CVAR_ARCHIVE); Globals.timescale = Cvar.Get("timescale", "0", 0); Globals.fixedtime = Cvar.Get("fixedtime", "0", 0); Globals.logfile_active = Cvar.Get("logfile", "0", 0); Globals.showtrace = Cvar.Get("showtrace", "0", 0); Globals.dedicated = Cvar.Get("dedicated", "0", Defines.CVAR_NOSET); var s = Com.sprintf("%4.2f %s %s %s", Globals.VERSION, Qcommon.CPUSTRING, Globals.__DATE__, Qcommon.BUILDSTRING); Cvar.Get("version", s, Defines.CVAR_SERVERINFO | Defines.CVAR_NOSET); if (Globals.dedicated.value != 1.0f) { Console.WriteLine("initializing network subsystem..."); } NET.Init(); //ok Netchan.Netchan_Init(); //ok if (Globals.dedicated.value != 1.0f) { Console.WriteLine("initializing server subsystem..."); } SV_MAIN.SV_Init(); //ok if (Globals.dedicated.value != 1.0f) { Console.WriteLine("initializing client subsystem..."); } Cl.Init(); // add + commands from command line if (!Cbuf.AddLateCommands()) { // if the user didn't give any commands, run default action if (Globals.dedicated.value == 0) { Cbuf.AddText("d1\n"); } else { Cbuf.AddText("dedicated_start\n"); } Cbuf.Execute(); } else { // the user asked for something explicit // so drop the loading plaque SCR.EndLoadingPlaque(); } Com.Printf("====== Quake2 Initialized ======\n\n"); // save config when configuration is completed Cl.WriteConfiguration(); } catch (Exception) { Sys.Error("Error during initialization"); } }