From 5879b4e39fb11360d5a0ce9c1e885c408e46df06 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 14 Nov 2011 19:24:22 +0000 Subject: [PATCH] (svn r23214) -Codechange: for base media sets pass the "search in tars" parameter to determine what to do --- src/base_media_base.h | 19 +++++++++---------- src/base_media_func.h | 12 ++++++------ src/gfxinit.cpp | 6 +++--- src/music.cpp | 6 +++--- src/sound.cpp | 4 ++-- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/base_media_base.h b/src/base_media_base.h index c6c0fd13eb..2cdedd6720 100644 --- a/src/base_media_base.h +++ b/src/base_media_base.h @@ -40,17 +40,17 @@ struct MD5File { * Information about a single base set. * @tparam T the real class we're going to be * @tparam Tnum_files the number of files in the set - * @tparam Tsubdir the subdirectory where to find the files + * @tparam Tsearch_in_tars whether to search in the tars or not */ -template +template struct BaseSet { typedef SmallMap TranslatedStrings; /** Number of files in this set */ static const size_t NUM_FILES = Tnum_files; - /** The sub directory to search for the files */ - static const Subdirectory SUBDIR = Tsubdir; + /** Whether to search in the tars or not. */ + static const bool SEARCH_IN_TARS = Tsearch_in_tars; /** Internal names of the files in this set. */ static const char * const *file_names; @@ -164,9 +164,8 @@ public: static uint FindSets() { BaseMedia fs; - /* GM_DIR == music set. Music sets don't support tars, - * so there is no need to search for tars in that case. */ - return fs.Scan(GetExtension(), Tbase_set::SUBDIR, Tbase_set::SUBDIR != GM_DIR); + /* Searching in tars is only done in the sound and graphics base sets. */ + return fs.Scan(GetExtension(), Tbase_set::SEARCH_IN_TARS ? BASESET_DIR : GM_DIR, Tbase_set::SEARCH_IN_TARS); } static bool SetSet(const char *name); @@ -204,7 +203,7 @@ enum BlitterType { }; /** All data of a graphics set. */ -struct GraphicsSet : BaseSet { +struct GraphicsSet : BaseSet { PaletteType palette; ///< Palette of this graphics set BlitterType blitter; ///< Blitter of this graphics set @@ -217,7 +216,7 @@ public: }; /** All data of a sounds set. */ -struct SoundsSet : BaseSet { +struct SoundsSet : BaseSet { }; /** All data/functions related with replacing the base sounds */ @@ -236,7 +235,7 @@ static const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS; static const uint NUM_SONGS_PLAYLIST = 32; /** All data of a music set. */ -struct MusicSet : BaseSet { +struct MusicSet : BaseSet { /** The name of the different songs. */ char song_name[NUM_SONGS_AVAILABLE][32]; byte track_nr[NUM_SONGS_AVAILABLE]; diff --git a/src/base_media_func.h b/src/base_media_func.h index 8834c6d4fa..c5b07fb4c2 100644 --- a/src/base_media_func.h +++ b/src/base_media_func.h @@ -39,8 +39,8 @@ template /* static */ Tbase_set *BaseMedia::duplica * @param allow_empty_filename empty filenames are valid * @return true if loading was successful. */ -template -bool BaseSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename) +template +bool BaseSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename) { memset(this, 0, sizeof(*this)); @@ -78,9 +78,9 @@ bool BaseSet::FillSetDetails(IniFile *ini, const char *p for (uint i = 0; i < Tnum_files; i++) { MD5File *file = &this->files[i]; /* Find the filename first. */ - item = files->GetItem(BaseSet::file_names[i], false); + item = files->GetItem(BaseSet::file_names[i], false); if (item == NULL || (item->value == NULL && !allow_empty_filename)) { - DEBUG(grf, 0, "No " SET_TYPE " file for: %s (in %s)", BaseSet::file_names[i], full_filename); + DEBUG(grf, 0, "No " SET_TYPE " file for: %s (in %s)", BaseSet::file_names[i], full_filename); return false; } @@ -131,7 +131,7 @@ bool BaseSet::FillSetDetails(IniFile *ini, const char *p file->missing_warning = strdup(item->value); } - switch (file->CheckMD5(Tsubdir)) { + switch (file->CheckMD5(Tsearch_in_tars ? BASESET_DIR : GM_DIR)) { case MD5File::CR_MATCH: this->valid_files++; /* FALL THROUGH */ @@ -155,7 +155,7 @@ bool BaseMedia::AddFile(const char *filename, size_t basepath_length, Tbase_set *set = new Tbase_set(); IniFile *ini = new IniFile(); - ini->LoadFromDisk(filename, Tbase_set::SUBDIR); + ini->LoadFromDisk(filename, Tbase_set::SEARCH_IN_TARS ? BASESET_DIR : GM_DIR); char *path = strdup(filename + basepath_length); char *psep = strrchr(path, PATHSEPCHAR); diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index 9edaadc390..0e4e2e89f7 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -248,7 +248,7 @@ void GfxLoadSprites() bool GraphicsSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) { - bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename, false); + bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename, false); if (ret) { IniGroup *metadata = ini->GetGroup("metadata"); IniItem *item; @@ -299,8 +299,8 @@ MD5File::ChecksumResult MD5File::CheckMD5(Subdirectory subdir) const static const char * const _graphics_file_names[] = { "base", "logos", "arctic", "tropical", "toyland", "extra" }; /** Implementation */ -template -/* static */ const char * const *BaseSet::file_names = _graphics_file_names; +template +/* static */ const char * const *BaseSet::file_names = _graphics_file_names; template /* static */ bool BaseMedia::DetermineBestSet() diff --git a/src/music.cpp b/src/music.cpp index de642cc30b..55599a947b 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -27,8 +27,8 @@ static const char * const _music_file_names[] = { /** Make sure we aren't messing things up. */ assert_compile(lengthof(_music_file_names) == NUM_SONGS_AVAILABLE); -template -/* static */ const char * const *BaseSet::file_names = _music_file_names; +template +/* static */ const char * const *BaseSet::file_names = _music_file_names; template /* static */ const char *BaseMedia::GetExtension() @@ -60,7 +60,7 @@ template bool MusicSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) { - bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename); + bool ret = this->BaseSet::FillSetDetails(ini, path, full_filename); if (ret) { this->num_available = 0; IniGroup *names = ini->GetGroup("names"); diff --git a/src/sound.cpp b/src/sound.cpp index 932ec8f5b1..fe4ba00574 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -281,8 +281,8 @@ INSTANTIATE_BASE_MEDIA_METHODS(BaseMedia, SoundsSet) static const char * const _sound_file_names[] = { "samples" }; -template -/* static */ const char * const *BaseSet::file_names = _sound_file_names; +template +/* static */ const char * const *BaseSet::file_names = _sound_file_names; template /* static */ const char *BaseMedia::GetExtension()