#include <time.h>
#include "libcurl.h"
+#ifdef CONFIG_CD
#include "cdaudio.h"
+#endif
#include "cl_video.h"
#include "progsvm.h"
#include "csprogs.h"
// 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);
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;
}
}
{
// 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();
}
buf.data = bufdata;
buf.maxsize = sizeof(bufdata);
MSG_WriteByte(&buf, svc_disconnect);
- NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, false);
- NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, false);
- NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, false);
+ NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, 0, false);
+ NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, 0, false);
+ NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, 0, false);
}
}
Host_Init();
realtime = 0;
+ host_dirtytime = Sys_DirtyTime();
for (;;)
{
if (setjmp(host_abortframe))
// Look for clients who have spawned
playing = false;
for (i = 0, host_client = svs.clients;i < svs.maxclients;i++, host_client++)
- if(host_client->spawned)
+ if(host_client->begun)
if(host_client->netconnection)
playing = true;
if(sv.time < 10)
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;
{
R_TimeReport("---");
Collision_Cache_NewFrame();
- R_TimeReport("collisioncache");
+ R_TimeReport("photoncache");
// decide the simulation time
if (cls.capturevideo.active)
{
else
S_Update(&r_refdef.view.matrix);
+#ifdef CONFIG_CD
CDAudio_Update();
R_TimeReport("audio");
+#endif
// reset gathering of mouse input
in_mouse_x = in_mouse_y = 0;
// make sure we open sockets before opening video because the Windows Firewall "unblock?" dialog can screw up the graphics context on some graphics drivers
NetConn_UpdateSockets();
VID_Start();
+#ifdef CONFIG_CD
CDAudio_Startup();
+#endif
}
}
if(locksession_run)
return;
locksession_run = true;
- if(locksession.integer != 0)
+ if(locksession.integer != 0 && !COM_CheckParm("-readonly"))
{
char vabuf[1024];
char *p = va(vabuf, sizeof(vabuf), "%slock%s", *fs_userdir ? fs_userdir : fs_basedir, sessionid.string);
R_Modules_Init();
Palette_Init();
+#ifdef CONFIG_MENU
MR_Init_Commands();
+#endif
VID_Shared_Init();
VID_Init();
Render_Init();
S_Init();
+#ifdef CONFIG_CD
CDAudio_Init();
+#endif
Key_Init();
CL_Init();
}
// 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 <demoname> runs a timedemo and quits, results of any timedemo can be found in gamedir/benchmark.log (for example id1/benchmark.log)
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
+#ifdef CONFIG_MENU
Cbuf_AddText("togglemenu 1\n");
+#endif
Cbuf_Execute();
}
Host_ShutdownServer ();
SV_UnlockThreadMutex();
+#ifdef CONFIG_MENU
// Shutdown menu
if(MR_Shutdown)
MR_Shutdown();
+#endif
// AK shutdown PRVM
// AK hmm, no PRVM_Shutdown(); yet
Host_SaveConfig();
+#ifdef CONFIG_CD
CDAudio_Shutdown ();
+#endif
S_Terminate ();
Curl_Shutdown ();
NetConn_Shutdown ();