mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-26 13:51:09 +00:00
Better bad save checking
- Move invalid save condition checks from save CCMD into G_SaveGame(). - Add a gamestate != GS_LEVEL check to G_DoSaveGame().
This commit is contained in:
parent
c7842a8de8
commit
5d65b10aec
2 changed files with 20 additions and 20 deletions
|
@ -813,21 +813,6 @@ CCMD (save)
|
||||||
Printf ("usage: save <filename> [description]\n");
|
Printf ("usage: save <filename> [description]\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!usergame)
|
|
||||||
{
|
|
||||||
Printf ("not in a saveable game\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (gamestate != GS_LEVEL)
|
|
||||||
{
|
|
||||||
Printf ("not in a level\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(players[consoleplayer].health <= 0 && !multiplayer)
|
|
||||||
{
|
|
||||||
Printf ("player is dead in a single-player game\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
FString fname = argv[1];
|
FString fname = argv[1];
|
||||||
DefaultExtension (fname, ".zds");
|
DefaultExtension (fname, ".zds");
|
||||||
G_SaveGame (fname, argv.argc() > 2 ? argv[2] : argv[1]);
|
G_SaveGame (fname, argv.argc() > 2 ? argv[2] : argv[1]);
|
||||||
|
|
|
@ -1983,10 +1983,25 @@ void G_SaveGame (const char *filename, const char *description)
|
||||||
Printf ("A game save is still pending.\n");
|
Printf ("A game save is still pending.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (!usergame)
|
||||||
|
{
|
||||||
|
Printf ("not in a saveable game\n");
|
||||||
|
}
|
||||||
|
else if (gamestate != GS_LEVEL)
|
||||||
|
{
|
||||||
|
Printf ("not in a level\n");
|
||||||
|
}
|
||||||
|
else if (players[consoleplayer].health <= 0 && !multiplayer)
|
||||||
|
{
|
||||||
|
Printf ("player is dead in a single-player game\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
savegamefile = filename;
|
savegamefile = filename;
|
||||||
strncpy (savedescription, description, sizeof(savedescription)-1);
|
strncpy (savedescription, description, sizeof(savedescription)-1);
|
||||||
savedescription[sizeof(savedescription)-1] = '\0';
|
savedescription[sizeof(savedescription)-1] = '\0';
|
||||||
sendsave = true;
|
sendsave = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FString G_BuildSaveName (const char *prefix, int slot)
|
FString G_BuildSaveName (const char *prefix, int slot)
|
||||||
|
@ -2138,7 +2153,7 @@ void G_DoSaveGame (bool okForQuicksave, FString filename, const char *descriptio
|
||||||
|
|
||||||
// Do not even try, if we're not in a level. (Can happen after
|
// Do not even try, if we're not in a level. (Can happen after
|
||||||
// a demo finishes playback.)
|
// a demo finishes playback.)
|
||||||
if (lines == NULL || sectors == NULL)
|
if (lines == NULL || sectors == NULL || gamestate != GS_LEVEL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue