X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=host.c;h=62dcf4748b19881b8832c6eaf4e6142e2f0ca2cd;hb=ab2e285e252663c0b7ab9128eb5ef753419f276e;hp=b236b0f12c051cff5946c31d268d5a82316f6166;hpb=97b79884ee55276e90c4dd60f9bfde8b9dbbff68;p=xonotic%2Fdarkplaces.git diff --git a/host.c b/host.c index b236b0f1..62dcf474 100644 --- a/host.c +++ b/host.c @@ -152,7 +152,9 @@ void Host_Error (const char *error, ...) // print out where the crash happened, if it was caused by QC (and do a cleanup) PRVM_Crash(SVVM_prog); PRVM_Crash(CLVM_prog); +#ifdef CONFIG_MENU PRVM_Crash(MVM_prog); +#endif cl.csqc_loaded = false; Cvar_SetValueQuick(&csqc_progcrc, -1); @@ -210,7 +212,7 @@ static void Host_ServerOptions (void) else { // default players in some games, singleplayer in most - if (gamemode != GAME_GOODVSBAD2 && gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC && gamemode != GAME_BATTLEMECH) + if (gamemode != GAME_GOODVSBAD2 && !IS_NEXUIZ_DERIVED(gamemode) && gamemode != GAME_BATTLEMECH) svs.maxclients = 1; } } @@ -338,8 +340,10 @@ void Host_LoadConfig_f(void) { // reset all cvars, commands and aliases to init values Cmd_RestoreInitState(); +#ifdef CONFIG_MENU // prepend a menu restart command to execute after the config Cbuf_InsertText("\nmenu_restart\n"); +#endif // reset cvars to their defaults, and then exec startup scripts again Host_AddConfigText(); } @@ -675,6 +679,7 @@ void Host_Main(void) Host_Init(); realtime = 0; + host_dirtytime = Sys_DirtyTime(); for (;;) { if (setjmp(host_abortframe)) @@ -799,8 +804,12 @@ void Host_Main(void) wait = 1; // because we cast to int time0 = Sys_DirtyTime(); - if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer && !svs.threaded) + if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer && !svs.threaded) { NetConn_SleepMicroseconds((int)wait); + if (cls.state != ca_dedicated) + NetConn_ClientFrame(); // helps server browser get good ping values + // TODO can we do the same for ServerFrame? Probably not. + } else Sys_Sleep((int)wait); delta = Sys_DirtyTime() - time0; @@ -1012,6 +1021,7 @@ void Host_Main(void) R_TimeReport("client"); CL_UpdateScreen(); + CL_MeshEntities_Reset(); R_TimeReport("render"); if (host_speeds.integer) @@ -1275,7 +1285,9 @@ static void Host_Init (void) R_Modules_Init(); Palette_Init(); +#ifdef CONFIG_MENU MR_Init_Commands(); +#endif VID_Shared_Init(); VID_Init(); Render_Init(); @@ -1312,10 +1324,12 @@ static void Host_Init (void) // put up the loading image so the user doesn't stare at a black screen... SCR_BeginLoadingPlaque(true); +#ifdef CONFIG_MENU if (cls.state != ca_dedicated) { MR_Init(); } +#endif // check for special benchmark mode // COMMANDLINEOPTION: Client: -benchmark runs a timedemo and quits, results of any timedemo can be found in gamedir/benchmark.log (for example id1/benchmark.log) @@ -1355,7 +1369,9 @@ static void Host_Init (void) if (!sv.active && !cls.demoplayback && !cls.connect_trying) { +#ifdef CONFIG_MENU Cbuf_AddText("togglemenu 1\n"); +#endif Cbuf_Execute(); } @@ -1407,9 +1423,11 @@ void Host_Shutdown(void) Host_ShutdownServer (); SV_UnlockThreadMutex(); +#ifdef CONFIG_MENU // Shutdown menu if(MR_Shutdown) MR_Shutdown(); +#endif // AK shutdown PRVM // AK hmm, no PRVM_Shutdown(); yet