================
*/
char hosterrorstring[4096];
+extern char sv_spawnmap[MAX_QPATH];
+extern char sv_loadgame[MAX_OSPATH];
void Host_Error (const char *error, ...)
{
va_list argptr;
static qboolean inerror = false;
+ // make sure we don't get in a loading loop
+ sv_loadgame[0] = 0;
+ sv_spawnmap[0] = 0;
+
// LordHavoc: if first frame has not been shown, or currently shutting
// down, do Sys_Error instead
if (!host_loopactive || host_shuttingdown)
va_end (argptr);
Con_Printf ("Host_Error: %s\n",hosterrorstring);
+ CL_Parse_DumpPacket();
+
PR_Crash();
if (sv.active)
CL_Disconnect ();
cls.demonum = -1;
+ // unload any partially loaded models
+ Mod_ClearErrorModels();
+
inerror = false;
longjmp (host_abortserver, 1);
MSG_WriteByte (&client->message, 0);
}
- NET_Heartbeat ();
+ NET_Heartbeat (1);
}
/*
// stop all client sounds immediately
CL_Disconnect ();
- NET_Heartbeat ();
- NET_Heartbeat ();
+ NET_Heartbeat (2);
+ NET_Heartbeat (2);
// flush any pending messages - like the score!!!
start = Sys_DoubleTime();
// send all messages to the clients
SV_SendClientMessages ();
+
+// send an heartbeat if enough time has passed since the last one
+ NET_Heartbeat (0);
}
// process console commands
Cbuf_Execute ();
+ // LordHavoc: map and load are delayed until video is initialized
+ Host_PerformSpawnServerAndLoadGame();
+
NET_Poll();
// if running the server locally, make intentions now
if (cls.state != ca_dedicated)
{
- VID_InitCvars();
-
Gamma_Init();
-
Palette_Init();
-
-#ifndef _WIN32 // on non win32, mouse comes before video for security reasons
- IN_Init ();
-#endif
+ VID_Shared_Init();
VID_Init();
- if (!VID_Mode(vid_fullscreen.integer, vid_width.integer, vid_height.integer, vid_bitsperpixel.integer))
- {
- if (vid_fullscreen.integer)
- {
- if (!VID_Mode(true, 640, 480, 16))
- if (!VID_Mode(false, 640, 480, 16))
- Sys_Error("Video modes failed\n");
- }
- else
- Sys_Error("Requested windowed video mode failed\n");
- }
Render_Init();
S_Init ();
CDAudio_Init ();
CL_Init ();
-#ifdef _WIN32 // on non win32, mouse comes before video for security reasons
- IN_Init ();
-#endif
}
Cbuf_InsertText ("exec quake.rc\n");
+ Cbuf_Execute ();
+ Cbuf_Execute ();
+ Cbuf_Execute ();
+ Cbuf_Execute ();
host_initialized = true;
- Sys_Printf ("========Quake Initialized=========\n");
+ Con_Printf ("========Quake Initialized=========\n");
+
+ if (cls.state != ca_dedicated)
+ VID_Open();
}
CDAudio_Shutdown ();
NET_Shutdown ();
S_Shutdown();
- IN_Shutdown ();
if (cls.state != ca_dedicated)
{