]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
TEU uses teu.rc, not quake.rc
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index 119a7aa5e3ee889237d02afe12394c86d72718d7..c1657d10f933d862605f1534ba082550613fb133 100644 (file)
--- a/host.c
+++ b/host.c
@@ -136,8 +136,6 @@ void PRVM_ProcessError(void);
 static char hosterrorstring1[4096];
 static char hosterrorstring2[4096];
 static qboolean hosterror = false;
-extern char sv_spawnmap[MAX_QPATH];
-extern char sv_loadgame[MAX_OSPATH];
 void Host_Error (const char *error, ...)
 {
        va_list argptr;
@@ -159,10 +157,6 @@ void Host_Error (const char *error, ...)
 
        strcpy(hosterrorstring2, hosterrorstring1);
 
-       // make sure we don't get in a loading loop
-       sv_loadgame[0] = 0;
-       sv_spawnmap[0] = 0;
-
        CL_Parse_DumpPacket();
 
        PR_Crash();
@@ -570,17 +564,20 @@ qboolean Host_FilterTime (double time)
                // default to sys_ticrate (server framerate - presumably low) unless we
                // have a good reason to run faster
                timecap = sys_ticrate.value;
-               if (cl_avidemo.value >= 0.1f)
-                       timecap = 1.0 / (double)cl_avidemo.value;
-               else if (vid_activewindow)
-                       timecap = 1.0 / host_maxfps.value;
+               if (cls.state != ca_dedicated)
+               {
+                       if (cl_avidemo.value >= 0.1f)
+                               timecap = 1.0 / (double)cl_avidemo.value;
+                       else if (vid_activewindow)
+                               timecap = 1.0 / host_maxfps.value;
+               }
 
                timeleft = oldrealtime + timecap - realtime;
                if (timeleft > 0)
                {
                        // don't totally hog the CPU
                        if (timeleft >= 0.02)
-                               Sys_Sleep();
+                               Sys_Sleep((int)(timeleft * 1000) - 5);
                        return false;
                }
        }
@@ -716,9 +713,6 @@ void _Host_Frame (float time)
        // process console commands
        Cbuf_Execute();
 
-       // LordHavoc: map and load are delayed until video is initialized
-       Host_PerformSpawnServerAndLoadGame();
-
        // if running the server locally, make intentions now
        if (cls.state == ca_connected && sv.active)
                CL_SendCmd(&cmd);
@@ -755,7 +749,7 @@ void _Host_Frame (float time)
                CL_ReadFromServer();
        }
 
-       ui_update();
+       //ui_update();
 
        CL_VideoFrame();
 
@@ -763,6 +757,7 @@ void _Host_Frame (float time)
        if (host_speeds.integer)
                time1 = Sys_DoubleTime();
 
+       R_UpdateWorld();
        CL_UpdateScreen();
 
        if (host_speeds.integer)
@@ -883,10 +878,11 @@ void Host_Init (void)
                CL_Init();
        }
 
-       Cbuf_InsertText ("exec quake.rc\n");
-       Cbuf_Execute();
-       Cbuf_Execute();
-       Cbuf_Execute();
+       // only cvars are executed when host_initialized == false
+       if (gamemode == GAME_TEU)
+               Cbuf_InsertText("exec teu.rc\n");
+       else
+               Cbuf_InsertText("exec quake.rc\n");
        Cbuf_Execute();
 
        host_initialized = true;
@@ -899,6 +895,14 @@ void Host_Init (void)
                SCR_BeginLoadingPlaque();
                MR_Init();
        }
+
+       // stuff it again so the first host frame will execute it again, this time
+       // in its entirety
+       if (gamemode == GAME_TEU)
+               Cbuf_InsertText("exec teu.rc\n");
+       else
+               Cbuf_InsertText("exec quake.rc\n");
+       Cbuf_Execute();
 }