]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
sv_save: Remove SV_CanSave hook and just call it directly. Move it to sv_save.c
authorcloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 14 May 2021 16:22:19 +0000 (16:22 +0000)
committercloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 14 May 2021 16:22:19 +0000 (16:22 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@13136 d7cf8633-e32d-0410-b094-e92efae38249

host.h
sv_main.c
sv_save.c

diff --git a/host.h b/host.h
index 80b5aa744e61e5bb196284de58dfebfbcaea8786..c87c3649edf86715e69226558e6e0028fd877718 100644 (file)
--- a/host.h
+++ b/host.h
@@ -34,7 +34,6 @@ typedef struct host_s
                void (*Disconnect)(void);
                void (*ToggleMenu)(void);
                qbool (*CL_Intermission)(void); // Quake compatibility
-               qbool (*SV_CanSave)(void); // Quake compatibility
                void (*CL_SendCvar)(struct cmd_state_s *);
                void (*SV_SendCvar)(struct cmd_state_s *);
        } hook;
index 090e1f4880c272c63ae94767447d3e4ed4a1b280..5a469a5fc3b15fe2bb4d58db49406624ab899f72 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;
@@ -710,7 +686,6 @@ void SV_Init (void)
        Cvar_RegisterVariable (&sv_writepicture_quality);
 
        SV_InitOperatorCommands();
-       host.hook.SV_CanSave = SV_CanSave;
 
        sv_mempool = Mem_AllocPool("server", 0, NULL);
 
index a08e33a58b37cd965bf5ce62867ddd4f205d90bf..799a0d8a08b2aa450e729dd8fa081e89dff3c1fb 100644 (file)
--- a/sv_save.c
+++ b/sv_save.c
@@ -176,6 +176,30 @@ void SV_Savegame_to(prvm_prog_t *prog, const char *name)
        Con_Print("done.\n");
 }
 
+static qbool SV_CanSave(void)
+{
+       prvm_prog_t *prog = SVVM_prog;
+       if(SV_IsLocalServer() == 1)
+       {
+               // singleplayer checks
+               // FIXME: This only checks if the first player is dead?
+               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;
+}
+
 /*
 ===============
 SV_Savegame_f
@@ -192,11 +216,8 @@ void SV_Savegame_f(cmd_state_t *cmd)
                return;
        }
 
-       if(host.hook.SV_CanSave)
-       {
-               if(!host.hook.SV_CanSave())
-                       return;
-       }
+       if(!SV_CanSave())
+               return;
 
        if (Cmd_Argc(cmd) != 2)
        {