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,