commit 211c7f396a34571a0f8a33dc8ba9f6573c9b4903
Author: mfrancis95 <mikefrancis95@gmail.com>
AuthorDate: Sun Jul 5 12:21:28 2020 -0400
Commit: mfrancis95 <mikefrancis95@gmail.com>
CommitDate: Sun Jul 5 19:19:30 2020 -0400
Add separate savegame directories for Freedoom (resolve #896)
---
src/d_iwad.c | 18 +++++++++++++++++-
src/d_iwad.h | 2 +-
src/doom/d_main.c | 5 ++---
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/d_iwad.c b/src/d_iwad.c
index e112e4f4..91835d11 100644
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -928,7 +928,7 @@ const iwad_t **D_FindAllIWADs(int mask)
// Get the IWAD name used for savegames.
//
-const char *D_SaveGameIWADName(GameMission_t gamemission)
+const char *D_SaveGameIWADName(GameMission_t gamemission, GameVariant_t gamevariant)
{
size_t i;
@@ -939,6 +939,22 @@ const char *D_SaveGameIWADName(GameMission_t gamemission)
// This ensures that doom1.wad and doom.wad saves are stored
// in the same place.
+ if (gamevariant == freedoom)
+ {
+ if (gamemission == doom)
+ {
+ return "freedoom1.wad";
+ }
+ else if (gamemission == doom2)
+ {
+ return "freedoom2.wad";
+ }
+ }
+ else if (gamevariant == freedm && gamemission == doom2)
+ {
+ return "freedm.wad";
+ }
+
for (i=0; i<arrlen(iwads); ++i)
{
if (gamemission == iwads[i].mission)
diff --git a/src/d_iwad.h b/src/d_iwad.h
index 7aba9d66..7a49e982 100644
--- a/src/d_iwad.h
+++ b/src/d_iwad.h
@@ -44,7 +44,7 @@ char *D_FindWADByName(const char *filename);
char *D_TryFindWADByName(const char *filename);
char *D_FindIWAD(int mask, GameMission_t *mission);
const iwad_t **D_FindAllIWADs(int mask);
-const char *D_SaveGameIWADName(GameMission_t gamemission);
+const char *D_SaveGameIWADName(GameMission_t gamemission, GameVariant_t gamevariant);
const char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode);
const char *D_SuggestGameName(GameMission_t mission, GameMode_t mode);
void D_CheckCorrectIWAD(GameMission_t mission);
diff --git a/src/doom/d_main.c b/src/doom/d_main.c
index 473d065d..aa7fd7ae 100644
--- a/src/doom/d_main.c
+++ b/src/doom/d_main.c
@@ -1567,8 +1567,7 @@ void D_DoomMain (void)
}
// auto-loaded files per IWAD
-
- autoload_dir = M_GetAutoloadDir(D_SaveGameIWADName(gamemission));
+ autoload_dir = M_GetAutoloadDir(D_SaveGameIWADName(gamemission, gamevariant));
DEH_AutoLoadPatches(autoload_dir);
W_AutoLoadWADs(autoload_dir);
free(autoload_dir);
@@ -1681,7 +1680,7 @@ void D_DoomMain (void)
// we've finished loading Dehacked patches.
D_SetGameDescription();
- savegamedir = M_GetSaveGameDir(D_SaveGameIWADName(gamemission));
+ savegamedir = M_GetSaveGameDir(D_SaveGameIWADName(gamemission, gamevariant));
// Check for -file in shareware
if (modifiedgame && (gamevariant != freedoom))