From 3951f1ad156b0938360aaf12f693c112a543eaa4 Mon Sep 17 00:00:00 2001 From: Fabian Greffrath Date: Tue, 5 Dec 2023 13:34:04 +0100 Subject: [PATCH 1/2] enable "Organize save files" if no savegame found in old location Also, remove the menu item since this will get switched back anyway. --- src/d_main.c | 56 ++++++++++++++++++++++++++++++++++------------------ src/m_menu.c | 4 ---- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index f0822fa6..d4fa6731 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -2451,34 +2451,52 @@ void D_DoomMain(void) PrintVersion(); - if (!M_CheckParm("-save") && organize_savefiles) + if (!M_CheckParm("-save")) { - int i; - char *wadname = wadfiles[0], *oldsavegame = basesavegame; - - for (i = mainwadfile; i < numwadfiles; i++) + if (!organize_savefiles) { - if (FileContainsMaps(wadfiles[i])) + // [FG] check for at least one savegame in the old location + glob_t *glob = I_StartMultiGlob(basesavegame, + GLOB_FLAG_NOCASE|GLOB_FLAG_SORTED, + "*.dsg", NULL); + + if (I_NextGlob(glob) == NULL) { - wadname = wadfiles[i]; - break; + organize_savefiles = true; } + + I_EndGlob(glob); } - basesavegame = M_StringJoin(oldsavegame, DIR_SEPARATOR_S, - "savegames", NULL); - free(oldsavegame); + if (organize_savefiles) + { + int i; + char *wadname = wadfiles[0], *oldsavegame = basesavegame; - NormalizeSlashes(basesavegame); - M_MakeDirectory(basesavegame); + for (i = mainwadfile; i < numwadfiles; i++) + { + if (FileContainsMaps(wadfiles[i])) + { + wadname = wadfiles[i]; + break; + } + } - oldsavegame = basesavegame; - basesavegame = M_StringJoin(oldsavegame, DIR_SEPARATOR_S, - M_BaseName(wadname), NULL); - free(oldsavegame); + basesavegame = M_StringJoin(oldsavegame, DIR_SEPARATOR_S, + "savegames", NULL); + free(oldsavegame); - NormalizeSlashes(basesavegame); - M_MakeDirectory(basesavegame); + NormalizeSlashes(basesavegame); + M_MakeDirectory(basesavegame); + + oldsavegame = basesavegame; + basesavegame = M_StringJoin(oldsavegame, DIR_SEPARATOR_S, + M_BaseName(wadname), NULL); + free(oldsavegame); + + NormalizeSlashes(basesavegame); + M_MakeDirectory(basesavegame); + } } I_Printf(VB_INFO, "Savegame directory: %s\n", basesavegame); diff --git a/src/m_menu.c b/src/m_menu.c index 7dab9546..5aa4c71b 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3993,7 +3993,6 @@ enum { gen4_demobar, gen4_palette_changes, gen4_level_brightness, - gen4_organize_savefiles, gen4_end1, gen4_title2, @@ -4188,9 +4187,6 @@ setup_menu_t gen_settings4[] = { // General Settings screen4 {"Level Brightness", S_THERMO|S_STRICT, m_null, M_X_THRM, M_Y + gen4_level_brightness*M_SPC, {"extra_level_brightness"}}, - {"Organize save files", S_YESNO|S_PRGWARN, m_null, M_X, - M_Y + gen4_organize_savefiles*M_SPC, {"organize_savefiles"}}, - {"", S_SKIP, m_null, M_X, M_Y + gen4_end1*M_SPC}, {"Compatibility-breaking Features" ,S_SKIP|S_TITLE, m_null, M_X, From b70fe6a6f1ab16b8dfd97353f445b1636c627706 Mon Sep 17 00:00:00 2001 From: Fabian Greffrath Date: Tue, 5 Dec 2023 15:25:44 +0100 Subject: [PATCH 2/2] bring back the menu entry --- src/d_main.c | 7 ++----- src/m_menu.c | 4 ++++ src/m_misc.c | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index d4fa6731..1052a698 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -2453,17 +2453,14 @@ void D_DoomMain(void) if (!M_CheckParm("-save")) { - if (!organize_savefiles) + if (organize_savefiles == -1) { // [FG] check for at least one savegame in the old location glob_t *glob = I_StartMultiGlob(basesavegame, GLOB_FLAG_NOCASE|GLOB_FLAG_SORTED, "*.dsg", NULL); - if (I_NextGlob(glob) == NULL) - { - organize_savefiles = true; - } + organize_savefiles = (I_NextGlob(glob) == NULL); I_EndGlob(glob); } diff --git a/src/m_menu.c b/src/m_menu.c index 5aa4c71b..7dab9546 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3993,6 +3993,7 @@ enum { gen4_demobar, gen4_palette_changes, gen4_level_brightness, + gen4_organize_savefiles, gen4_end1, gen4_title2, @@ -4187,6 +4188,9 @@ setup_menu_t gen_settings4[] = { // General Settings screen4 {"Level Brightness", S_THERMO|S_STRICT, m_null, M_X_THRM, M_Y + gen4_level_brightness*M_SPC, {"extra_level_brightness"}}, + {"Organize save files", S_YESNO|S_PRGWARN, m_null, M_X, + M_Y + gen4_organize_savefiles*M_SPC, {"organize_savefiles"}}, + {"", S_SKIP, m_null, M_X, M_Y + gen4_end1*M_SPC}, {"Compatibility-breaking Features" ,S_SKIP|S_TITLE, m_null, M_X, diff --git a/src/m_misc.c b/src/m_misc.c index 1711ff96..20d8a809 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -627,7 +627,7 @@ default_t defaults[] = { { "organize_savefiles", (config_t *) &organize_savefiles, NULL, - {0}, {0,1}, number, ss_gen, wad_no, + {-1}, {-1,1}, number, ss_gen, wad_no, "1 to organize save files" },