diff options
| author | Tilka <tilkax@gmail.com> | 2019-02-26 04:25:45 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-26 04:25:45 +0000 |
| commit | 19f4772e4772a199ec58e03df23e6e0e8bf003b9 (patch) | |
| tree | d7f103ae74f68a0d2377ebbf1f2aa1b18594d91e /Source/Core/UICommon/GameFile.cpp | |
| parent | 02f5a7505fe8bb9c657cd5cb2b72c82e5b018da8 (diff) | |
| parent | 71e6243c54c7a66f8216533fecfbf0fa69cabaca (diff) | |
Merge pull request #7816 from JosJuice/titledatabase-edge-cases
Fix edge cases in TitleDatabase, cover downloading, Gecko code downloading
Diffstat (limited to 'Source/Core/UICommon/GameFile.cpp')
| -rw-r--r-- | Source/Core/UICommon/GameFile.cpp | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/Source/Core/UICommon/GameFile.cpp b/Source/Core/UICommon/GameFile.cpp index d7cc55e2b7..b963450cc7 100644 --- a/Source/Core/UICommon/GameFile.cpp +++ b/Source/Core/UICommon/GameFile.cpp @@ -50,7 +50,7 @@ static const std::string EMPTY_STRING; static bool UseGameCovers() { // We ifdef this out on Android because accessing the config before emulation start makes us crash. -// The Android GUI doesn't support covers anyway, so this doesn't make us lose out on functionality. +// The Android GUI handles covers in Java anyway, so this doesn't make us lose any functionality. #ifdef ANDROID return false; #else @@ -58,6 +58,17 @@ static bool UseGameCovers() #endif } +DiscIO::Language GameFile::GetConfigLanguage() const +{ +#ifdef ANDROID + // TODO: Make the Android app load the config at app start instead of emulation start + // so that we can access the user's preference here + return DiscIO::Language::English; +#else + return SConfig::GetInstance().GetCurrentLanguage(DiscIO::IsWii(m_platform)); +#endif +} + bool operator==(const GameBanner& lhs, const GameBanner& rhs) { return std::tie(lhs.buffer, lhs.width, lhs.height) == std::tie(rhs.buffer, rhs.width, rhs.height); @@ -94,15 +105,7 @@ const std::string& GameFile::Lookup(DiscIO::Language language, const std::string& GameFile::LookupUsingConfigLanguage(const std::map<DiscIO::Language, std::string>& strings) const { -#ifdef ANDROID - // TODO: Make the Android app load the config at app start instead of emulation start - // so that we can access the user's preference here - const DiscIO::Language language = DiscIO::Language::English; -#else - const bool wii = DiscIO::IsWii(m_platform); - const DiscIO::Language language = SConfig::GetInstance().GetCurrentLanguage(wii); -#endif - return Lookup(language, strings); + return Lookup(GetConfigLanguage(), strings); } GameFile::GameFile(const std::string& path) @@ -132,6 +135,7 @@ GameFile::GameFile(const std::string& path) m_internal_name = volume->GetInternalName(); m_game_id = volume->GetGameID(); + m_gametdb_id = volume->GetGameTDBID(); m_title_id = volume->GetTitleID().value_or(0); m_maker_id = volume->GetMakerID(); m_revision = volume->GetRevision().value_or(0); @@ -198,9 +202,8 @@ void GameFile::DownloadDefaultCover() const auto cover_path = File::GetUserPath(D_COVERCACHE_IDX) + DIR_SEP; - // If covers have already been downloaded, abort - if (File::Exists(cover_path + m_game_id + ".png") || - File::Exists(cover_path + m_game_id.substr(0, 4) + ".png")) + // If the cover has already been downloaded, abort + if (File::Exists(cover_path + m_gametdb_id + ".png")) return; Common::HttpRequest request; @@ -249,22 +252,13 @@ void GameFile::DownloadDefaultCover() break; } - auto response = request.Get(StringFromFormat(COVER_URL, region_code.c_str(), m_game_id.c_str())); + auto response = + request.Get(StringFromFormat(COVER_URL, region_code.c_str(), m_gametdb_id.c_str())); if (response) { File::WriteStringToFile(std::string(response.value().begin(), response.value().end()), - cover_path + m_game_id + ".png"); - return; - } - - response = - request.Get(StringFromFormat(COVER_URL, region_code.c_str(), m_game_id.substr(0, 4).c_str())); - - if (response) - { - File::WriteStringToFile(std::string(response.value().begin(), response.value().end()), - cover_path + m_game_id.substr(0, 4) + ".png"); + cover_path + m_gametdb_id + ".png"); } } @@ -277,10 +271,7 @@ bool GameFile::DefaultCoverChanged() std::string contents; - File::ReadFileToString(cover_path + m_game_id + ".png", contents); - - if (contents.empty()) - File::ReadFileToString(cover_path + m_game_id.substr(0, 4).c_str() + ".png", contents); + File::ReadFileToString(cover_path + m_gametdb_id + ".png", contents); if (contents.empty()) return false; @@ -328,6 +319,7 @@ void GameFile::DoState(PointerWrap& p) p.Do(m_descriptions); p.Do(m_internal_name); p.Do(m_game_id); + p.Do(m_gametdb_id); p.Do(m_title_id); p.Do(m_maker_id); @@ -433,10 +425,7 @@ void GameFile::CustomBannerCommit() const std::string& GameFile::GetName(const Core::TitleDatabase& title_database) const { - const auto type = m_platform == DiscIO::Platform::WiiWAD ? - Core::TitleDatabase::TitleType::Channel : - Core::TitleDatabase::TitleType::Other; - const std::string& custom_name = title_database.GetTitleName(m_game_id, type); + const std::string& custom_name = title_database.GetTitleName(m_gametdb_id, GetConfigLanguage()); return custom_name.empty() ? GetName() : custom_name; } |
