]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
Added a lot of builtin commands to prvm_cmds.c (mostly from pr_cmds).
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index e6401a03df4d9c491cfa3cd11b3aa2232a76e561..826d6e0b6d803bf9fcda7f76d6395809dbdaa02c 100644 (file)
--- a/host.c
+++ b/host.c
@@ -166,6 +166,11 @@ void Host_Error (const char *error, ...)
 
        PR_Crash();
 
+       //PRVM_Crash(); // crash current prog
+
+       // crash all prvm progs
+       PRVM_CrashAll();
+
        if (sv.active)
                Host_ShutdownServer (false);
 
@@ -541,7 +546,7 @@ Returns false if the time is too short to run a frame
 extern cvar_t cl_avidemo;
 qboolean Host_FilterTime (double time)
 {
-       double timecap;
+       double timecap, timeleft;
        realtime += time;
 
        if (slowmo.value < 0.0f)
@@ -554,21 +559,24 @@ qboolean Host_FilterTime (double time)
                Cvar_SetValue("cl_avidemo", 0.0f);
 
        // check if framerate is too high
-       if (cl_avidemo.value >= 0.1f)
+       if (!cls.timedemo)
        {
-               timecap = 1.0 / (double)cl_avidemo.value;
-               if ((realtime - oldrealtime) < timecap)
-                       return false;
-       }
-       else if (!cls.timedemo)
-       {
-               // default to sys_ticrate (server framerate - presumably low) unless we're the active window and either connected to a server or playing a video
+               // default to sys_ticrate (server framerate - presumably low) unless we
+               // have a good reason to run faster
                timecap = sys_ticrate.value;
-               if (vid_activewindow && (cls.state == ca_connected || cl_videoplaying))
+               if (cl_avidemo.value >= 0.1f)
+                       timecap = 1.0 / (double)cl_avidemo.value;
+               else if (vid_activewindow && !scr_con_current)
                        timecap = 1.0 / host_maxfps.value;
 
-               if ((realtime - oldrealtime) < timecap)
+               timeleft = oldrealtime + timecap - realtime;
+               if (timeleft > 0)
+               {
+                       // don't totally hog the CPU
+                       if (timeleft >= 0.02)
+                               Sys_Sleep();
                        return false;
+               }
        }
 
        // LordHavoc: copy into host_realframetime as well
@@ -685,11 +693,7 @@ void _Host_Frame (float time)
 
        // decide the simulation time
        if (!Host_FilterTime(time))
-       {
-               // if time was rejected, don't totally hog the CPU
-               Sys_Sleep();
                return;
-       }
 
        cl.islocalgame = NetConn_IsLocalGame();
 
@@ -779,6 +783,9 @@ void _Host_Frame (float time)
 
        host_framecount++;
        host_loopactive = true;
+
+       if(vec3_origin[0] || vec3_origin[1] || vec3_origin[2])
+               Con_Print("vec3_origin modified !\n");
 }
 
 void Host_Frame (float time)
@@ -820,6 +827,7 @@ void Host_Frame (float time)
 //============================================================================
 
 void Render_Init(void);
+void M_Scipt_Init ();
 
 /*
 ====================
@@ -846,12 +854,12 @@ void Host_Init (void)
        V_Init();
        COM_Init();
        Host_InitLocal();
-       W_LoadWadFile("gfx.wad");
        Key_Init();
        Con_Init();
        Chase_Init();
-       M_Init();
        PR_Init();
+       PRVM_Init();
+       MR_Init();
        Mod_Init();
        NetConn_Init();
        SV_Init();
@@ -881,7 +889,10 @@ void Host_Init (void)
        Con_DPrintf ("========Initialized=========\n");
 
        if (cls.state != ca_dedicated)
+       {
                VID_Open();
+               SCR_BeginLoadingPlaque();
+       }
 }
 
 
@@ -904,11 +915,17 @@ void Host_Shutdown(void)
        }
        isdown = true;
 
+       // Shutdown menu
+       MR_Shutdown();
+
+       // AK shutdown PRVM
+       // AK hmm, no PRVM_Shutdown(); yet
+       
+
        Host_WriteConfiguration ();
 
        CDAudio_Shutdown ();
        NetConn_Shutdown ();
-       S_Shutdown();
 
        if (cls.state != ca_dedicated)
        {