From 9ba5e30bed6d42c958fdf4b8a9e4cb46eb0545b8 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Mon, 27 Apr 2015 14:15:03 -0400 Subject: [PATCH] - Moved autoload initialization to a separate function so that the rest of the ini can be loaded as before. Some platforms do indeed place zdoom.pk3 elsewhere. --- src/d_main.cpp | 11 +++++++---- src/gameconfigfile.cpp | 40 ++++++++++++++++++++++------------------ src/gameconfigfile.h | 3 ++- src/m_misc.cpp | 4 ++-- src/m_misc.h | 2 +- 5 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 9ddc17cd5..98be13e33 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1981,6 +1981,9 @@ static void D_DoomInit() } FRandom::StaticClearRandom (); + + Printf ("M_LoadDefaults: Load system defaults.\n"); + M_LoadDefaults (); // load before initing other systems } //========================================================================== @@ -1989,7 +1992,7 @@ static void D_DoomInit() // //========================================================================== -static void AddAutoloadFiles(const char *autoname) +static void AddAutoloadFiles(const char *autoname) { LumpFilterIWAD.Format("%s.", autoname); // The '.' is appened to simplify parsing the string @@ -2247,8 +2250,8 @@ void D_DoomMain (void) iwad_man = new FIWadManager; iwad_man->ParseIWadInfos(basewad); - Printf ("M_LoadDefaults: Load system defaults.\n"); - M_LoadDefaults (iwad_man); // load before initing other systems + // Now that we have the IWADINFO, initialize the autoload ini sections. + GameConfig->DoAutoloadSetup(iwad_man); PClass::StaticInit (); atterm(FinalGC); @@ -2292,7 +2295,7 @@ void D_DoomMain (void) FBaseCVar::DisableCallbacks(); GameConfig->DoGameSetup (gameinfo.ConfigName); - AddAutoloadFiles(iwad_info->Autoname); + AddAutoloadFiles(iwad_info->Autoname); // Process automatically executed files FExecList *exec; diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 30dc2276d..3d396d98b 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -76,7 +76,7 @@ EXTERN_CVAR (Color, am_cdwallcolor) EXTERN_CVAR (Float, spc_amp) EXTERN_CVAR (Bool, wi_percents) -FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) +FGameConfigFile::FGameConfigFile () { #ifdef __APPLE__ FString user_docs, user_app_support, local_app_support; @@ -161,6 +161,27 @@ FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) SetValueForKey ("Path", "$DOOMWADDIR", true); } + // Add some self-documentation. + SetSectionNote("IWADSearch.Directories", + "# These are the directories to automatically search for IWADs.\n" + "# Each directory should be on a separate line, preceded by Path=\n"); + SetSectionNote("FileSearch.Directories", + "# These are the directories to search for wads added with the -file\n" + "# command line parameter, if they cannot be found with the path\n" + "# as-is. Layout is the same as for IWADSearch.Directories\n"); +} + +FGameConfigFile::~FGameConfigFile () +{ +} + +void FGameConfigFile::WriteCommentHeader (FILE *file) const +{ + fprintf (file, "# This file was generated by " GAMENAME " %s on %s\n", GetVersionString(), myasctime()); +} + +void FGameConfigFile::DoAutoloadSetup (FIWadManager *iwad_man) +{ // Create auto-load sections, so users know what's available. // Note that this totem pole is the reverse of the order that // they will appear in the file. @@ -220,14 +241,6 @@ FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) MoveSectionToStart("FileSearch.Directories"); MoveSectionToStart("IWADSearch.Directories"); - // Add some self-documentation. - SetSectionNote("IWADSearch.Directories", - "# These are the directories to automatically search for IWADs.\n" - "# Each directory should be on a separate line, preceded by Path=\n"); - SetSectionNote("FileSearch.Directories", - "# These are the directories to search for wads added with the -file\n" - "# command line parameter, if they cannot be found with the path\n" - "# as-is. Layout is the same as for IWADSearch.Directories\n"); SetSectionNote("Doom.AutoExec", "# Files to automatically execute when running the corresponding game.\n" "# Each file should be on its own line, preceded by Path=\n\n"); @@ -245,15 +258,6 @@ FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) "# 'doom.doom2.commercial.Autoload' only when playing doom2.wad.\n\n"); } -FGameConfigFile::~FGameConfigFile () -{ -} - -void FGameConfigFile::WriteCommentHeader (FILE *file) const -{ - fprintf (file, "# This file was generated by " GAMENAME " %s on %s\n", GetVersionString(), myasctime()); -} - void FGameConfigFile::DoGlobalSetup () { if (SetSection ("GlobalSettings.Unknown")) diff --git a/src/gameconfigfile.h b/src/gameconfigfile.h index 5862bb79e..68630f510 100644 --- a/src/gameconfigfile.h +++ b/src/gameconfigfile.h @@ -43,9 +43,10 @@ class FIWadManager; class FGameConfigFile : public FConfigFile { public: - FGameConfigFile (FIWadManager *iwad_man); + FGameConfigFile (); ~FGameConfigFile (); + void DoAutoloadSetup (FIWadManager *iwad_man); void DoGlobalSetup (); void DoGameSetup (const char *gamename); void DoKeySetup (const char *gamename); diff --git a/src/m_misc.cpp b/src/m_misc.cpp index 1369bdb52..7f4fa482d 100644 --- a/src/m_misc.cpp +++ b/src/m_misc.cpp @@ -410,9 +410,9 @@ CCMD (writeini) // M_LoadDefaults // -void M_LoadDefaults (FIWadManager *iwad_man) +void M_LoadDefaults () { - GameConfig = new FGameConfigFile(iwad_man); + GameConfig = new FGameConfigFile; GameConfig->DoGlobalSetup (); atterm (M_SaveDefaultsFinal); } diff --git a/src/m_misc.h b/src/m_misc.h index ea146c690..8b0da1050 100644 --- a/src/m_misc.h +++ b/src/m_misc.h @@ -41,7 +41,7 @@ void M_FindResponseFile (void); // Pass a NULL to get the original behavior. void M_ScreenShot (const char *filename); -void M_LoadDefaults (FIWadManager *iwad_man); +void M_LoadDefaults (); bool M_SaveDefaults (const char *filename); void M_SaveCustomKeys (FConfigFile *config, char *section, char *subsection, size_t sublen);