static int Main(string[] args) { // select display device _DisplayDevice = DisplayDevice.Default; quakeparms_t parms = new quakeparms_t(); parms.basedir = Application.StartupPath; string[] args2 = new string[args.Length + 1]; args2[0] = String.Empty; args.CopyTo(args2, 1); game_engine.COM_InitArgv(args2); parms.argv = new string[game_engine.com_argv.Length]; game_engine.com_argv.CopyTo(parms.argv, 0); if (game_engine.HasParam("-dedicated")) { throw new Exception("Dedicated server mode not supported!"); } Size size = new Size(640, 480); GraphicsMode mode = new GraphicsMode(); bool fullScreen = false; using (MainForm form = MainForm.CreateInstance(size, mode, fullScreen)) { game_engine.Host_Init(parms); form.Run(); } game_engine.Host_Shutdown(); return(0); // all Ok }
public static void Host_Init(quakeparms_t parms) { Con_DPrintf("Host.Init\n"); host_parms = parms; Cache_Init(1024 * 1024 * 16); // debug Cbuf_Init(); Cmd_Init(); game_engine.V_Init(); Chase_Init(); InitVCR(parms); COM_Init(parms.basedir, parms.argv); Host_InitLocal(); game_engine.W_LoadWadFile("gfx.wad"); Key_Init(); Con_Init(); Menu.M_Init(); PR_Init(); Mod_Init(); NET_Init(); SV_Init(); R_InitTextures(); if (cls.state != cactive_t.ca_dedicated) { host_basepal = COM_LoadFile("gfx/palette.lmp"); if (host_basepal == null) { Sys_Error("Couldn't load gfx/palette.lmp"); } host_colormap = COM_LoadFile("gfx/colormap.lmp"); if (host_colormap == null) { Sys_Error("Couldn't load gfx/colormap.lmp"); } // on non win32, mouse comes before video for security reasons IN_Init(); VID_Init(host_basepal); Draw_Init(); SCR_Init(); R_Init(); S_Init(); CDAudio_Init(); Sbar_Init(); CL_Init(); } Cbuf_InsertText("exec quake.rc\n"); host_initialized = true; Con_DPrintf("========Quake Initialized=========\n"); }
public static void InitVCR(quakeparms_t parms) { if (HasParam("-playback")) { if (com_argv.Length != 2) { Sys_Error("No other parameters allowed with -playback\n"); } Stream file = Sys_FileOpenRead("quake.vcr"); if (file == null) { Sys_Error("playback file not found\n"); } _VcrReader = new BinaryReader(file, Encoding.ASCII); int signature = _VcrReader.ReadInt32(); //Sys_FileRead(vcrFile, &i, sizeof(int)); if (signature != q_shared.VCR_SIGNATURE) { Sys_Error("Invalid signature in vcr file\n"); } int argc = _VcrReader.ReadInt32(); // Sys_FileRead(vcrFile, &com_argc, sizeof(int)); string[] argv = new string[argc + 1]; argv[0] = parms.argv[0]; for (int i = 1; i < argv.Length; i++) { argv[i] = ReadString(_VcrReader); } com_argv = argv; parms.argv = argv; } int n = COM_CheckParm("-record"); if (n != 0) { Stream file = Sys_FileOpenWrite("quake.vcr"); // vcrFile = Sys_FileOpenWrite("quake.vcr"); _VcrWriter = new BinaryWriter(file, Encoding.ASCII); _VcrWriter.Write(q_shared.VCR_SIGNATURE); // Sys_FileWrite(vcrFile, &i, sizeof(int)); _VcrWriter.Write(com_argv.Length - 1); for (int i = 1; i < com_argv.Length; i++) { if (i == n) { WriteString(_VcrWriter, "-playback"); continue; } WriteString(_VcrWriter, Argv(i)); } } }