summaryrefslogtreecommitdiff
path: root/Source/Core/UICommon/GameFile.cpp
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2019-02-26 04:25:45 +0000
committerGitHub <noreply@github.com>2019-02-26 04:25:45 +0000
commit19f4772e4772a199ec58e03df23e6e0e8bf003b9 (patch)
treed7f103ae74f68a0d2377ebbf1f2aa1b18594d91e /Source/Core/UICommon/GameFile.cpp
parent02f5a7505fe8bb9c657cd5cb2b72c82e5b018da8 (diff)
parent71e6243c54c7a66f8216533fecfbf0fa69cabaca (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.cpp55
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;
}