X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=host.c;h=8fc6c0827ee1471c51f404285da4f425f42940c3;hb=19487ef2ebada39fb6a6a372b30ca4f66bb78ada;hp=0b97a4547183e3c6675ca0bf4ed550aa38ead26c;hpb=9804c2369e4ac79331fc05bf37655bdf76457f2d;p=xonotic%2Fdarkplaces.git diff --git a/host.c b/host.c index 0b97a454..8fc6c082 100644 --- a/host.c +++ b/host.c @@ -150,7 +150,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); @@ -208,7 +210,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; } } @@ -336,8 +338,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(); } @@ -673,6 +677,7 @@ void Host_Main(void) Host_Init(); realtime = 0; + host_dirtytime = Sys_DirtyTime(); for (;;) { if (setjmp(host_abortframe)) @@ -797,8 +802,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; @@ -1010,6 +1019,7 @@ void Host_Main(void) R_TimeReport("client"); CL_UpdateScreen(); + CL_MeshEntities_Reset(); R_TimeReport("render"); if (host_speeds.integer) @@ -1269,7 +1279,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(); @@ -1304,10 +1316,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) @@ -1347,7 +1361,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(); } @@ -1399,9 +1415,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