]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
cvar: Rename Cvar_RegisterAlias to Cvar_RegisterVirtual
[xonotic/darkplaces.git] / sv_main.c
index 090e1f4880c272c63ae94767447d3e4ed4a1b280..d1c9e71c99085e02cbdc7112d42ef66ffc2b62c7 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -434,30 +434,6 @@ static void SV_AreaStats_f(cmd_state_t *cmd)
        World_PrintAreaStats(&sv.world, "server");
 }
 
-static qbool SV_CanSave(void)
-{
-       prvm_prog_t *prog = SVVM_prog;
-       if(SV_IsLocalServer() == 1)
-       {
-               // singleplayer checks
-               if ((svs.clients[0].active && PRVM_serveredictfloat(svs.clients[0].edict, deadflag)))
-               {
-                       Con_Print("Can't savegame with a dead player\n");
-                       return false;
-               }
-
-               if(host.hook.CL_Intermission && host.hook.CL_Intermission())
-               {
-                       Con_Print("Can't save in intermission.\n");
-                       return false;
-               }
-       }
-       else
-               Con_Print(CON_WARN "Warning: saving a multiplayer game may have strange results when restored (to properly resume, all players must join in the same player slots and then the game can be reloaded).\n");
-       return true;
-       
-}
-
 static void SV_ServerOptions (void)
 {
        int i;
@@ -550,8 +526,8 @@ void SV_Init (void)
        Cvar_RegisterVariable (&skill);
        Cvar_RegisterVariable (&host_timescale);
        Cvar_RegisterCallback (&host_timescale, Host_Timescale_c);
-       Cvar_RegisterAlias (&host_timescale, "slowmo");
-       Cvar_RegisterAlias (&host_timescale, "timescale");
+       Cvar_RegisterVirtual (&host_timescale, "slowmo");
+       Cvar_RegisterVirtual (&host_timescale, "timescale");
        Cvar_RegisterVariable (&sv_accelerate);
        Cvar_RegisterVariable (&sv_aim);
        Cvar_RegisterVariable (&sv_airaccel_qw);
@@ -642,7 +618,7 @@ void SV_Init (void)
        Cvar_RegisterVariable (&sv_protocolname);
        Cvar_RegisterVariable (&sv_random_seed);
        Cvar_RegisterVariable (&host_limitlocal);
-       Cvar_RegisterAlias(&host_limitlocal, "sv_ratelimitlocalplayer");
+       Cvar_RegisterVirtual(&host_limitlocal, "sv_ratelimitlocalplayer");
        Cvar_RegisterVariable (&sv_sound_land);
        Cvar_RegisterVariable (&sv_sound_watersplash);
        Cvar_RegisterVariable (&sv_stepheight);
@@ -710,7 +686,7 @@ void SV_Init (void)
        Cvar_RegisterVariable (&sv_writepicture_quality);
 
        SV_InitOperatorCommands();
-       host.hook.SV_CanSave = SV_CanSave;
+       host.hook.SV_Shutdown = SV_Shutdown;
 
        sv_mempool = Mem_AllocPool("server", 0, NULL);
 
@@ -2083,10 +2059,12 @@ void SV_Shutdown(void)
        prvm_prog_t *prog = SVVM_prog;
        int i;
 
-       Con_DPrintf("SV_Shutdown\n");
+       SV_LockThreadMutex();
 
        if (!sv.active)
-               return;
+               goto end;
+
+       Con_DPrintf("SV_Shutdown\n");
 
        NetConn_Heartbeat(2);
        NetConn_Heartbeat(2);
@@ -2115,8 +2093,8 @@ void SV_Shutdown(void)
 //
        memset(&sv, 0, sizeof(sv));
        memset(svs.clients, 0, svs.maxclients*sizeof(client_t));
-
-       cl.islocalgame = false;
+end:
+       SV_UnlockThreadMutex();
 }
 
 /////////////////////////////////////////////////////