diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2020-05-03 12:49:46 -0500 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2020-10-03 17:10:35 -0500 |
| commit | 8a1539f9487cff0b5785e2d341663e4d7136e2a3 (patch) | |
| tree | 061823721183719958d60316e5bd30464f99393b /Source/Core/VideoCommon | |
| parent | 0fe60816801d0c17946f73327c898555813a8e70 (diff) | |
VideoCommon: Make a reusable free function for getting top level directories that have a matching gameid text file underneath
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/HiresTextures.cpp | 16 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/HiresTextures.h | 5 |
2 files changed, 11 insertions, 10 deletions
diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index bcc0cac4c9..92ba7ff9e6 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -87,7 +87,8 @@ void HiresTexture::Update() } const std::string& game_id = SConfig::GetInstance().GetGameID(); - const std::set<std::string> texture_directories = GetTextureDirectories(game_id); + const std::set<std::string> texture_directories = + GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); const std::vector<std::string> extensions{".png", ".dds"}; for (const auto& texture_directory : texture_directories) @@ -454,10 +455,11 @@ bool HiresTexture::LoadTexture(Level& level, const std::vector<u8>& buffer) return true; } -std::set<std::string> HiresTexture::GetTextureDirectories(const std::string& game_id) +std::set<std::string> GetTextureDirectoriesWithGameId(const std::string& root_directory, + const std::string& game_id) { std::set<std::string> result; - const std::string texture_directory = File::GetUserPath(D_HIRESTEXTURES_IDX) + game_id; + const std::string texture_directory = root_directory + game_id; if (File::Exists(texture_directory)) { @@ -466,8 +468,7 @@ std::set<std::string> HiresTexture::GetTextureDirectories(const std::string& gam else { // If there's no directory with the region-specific ID, look for a 3-character region-free one - const std::string region_free_directory = - File::GetUserPath(D_HIRESTEXTURES_IDX) + game_id.substr(0, 3); + const std::string region_free_directory = root_directory + game_id.substr(0, 3); if (File::Exists(region_free_directory)) { @@ -482,7 +483,6 @@ std::set<std::string> HiresTexture::GetTextureDirectories(const std::string& gam }; // Look for any other directories that might be specific to the given gameid - const auto root_directory = File::GetUserPath(D_HIRESTEXTURES_IDX); const auto files = Common::DoFileSearch({root_directory}, {".txt"}, true); for (const auto& file : files) { @@ -490,8 +490,8 @@ std::set<std::string> HiresTexture::GetTextureDirectories(const std::string& gam { // The following code is used to calculate the top directory // of a found gameid.txt file - // ex: <dolphin dir>/Load/Textures/My folder/gameids/<gameid>.txt - // would insert "<dolphin dir>/Load/Textures/My folder" + // ex: <root directory>/My folder/gameids/<gameid>.txt + // would insert "<root directory>/My folder" const auto directory_path = file.substr(root_directory.size()); const std::size_t first_path_separator_position = directory_path.find_first_of(DIR_SEP_CHR); result.insert(root_directory + directory_path.substr(0, first_path_separator_position)); diff --git a/Source/Core/VideoCommon/HiresTextures.h b/Source/Core/VideoCommon/HiresTextures.h index ec0b188154..2112218f98 100644 --- a/Source/Core/VideoCommon/HiresTextures.h +++ b/Source/Core/VideoCommon/HiresTextures.h @@ -14,6 +14,9 @@ enum class TextureFormat; +std::set<std::string> GetTextureDirectoriesWithGameId(const std::string& root_directory, + const std::string& game_id); + class HiresTexture { public: @@ -54,8 +57,6 @@ private: static bool LoadTexture(Level& level, const std::vector<u8>& buffer); static void Prefetch(); - static std::set<std::string> GetTextureDirectories(const std::string& game_id); - HiresTexture() {} bool m_has_arbitrary_mipmaps; }; |
