WX: Use TitleDatabase for getting title names

This commit is contained in:
Léo Lam 2017-05-15 16:26:22 +02:00
parent 89b5549fe0
commit 2f5f9be9ac
3 changed files with 16 additions and 51 deletions

View File

@ -50,6 +50,7 @@
#include "Core/HW/DVD/DVDInterface.h" #include "Core/HW/DVD/DVDInterface.h"
#include "Core/HW/WiiSaveCrypted.h" #include "Core/HW/WiiSaveCrypted.h"
#include "Core/Movie.h" #include "Core/Movie.h"
#include "Core/TitleDatabase.h"
#include "DiscIO/Blob.h" #include "DiscIO/Blob.h"
#include "DiscIO/Enums.h" #include "DiscIO/Enums.h"
#include "DiscIO/Volume.h" #include "DiscIO/Volume.h"
@ -154,37 +155,6 @@ static int CompareGameListItems(const GameListItem* iso1, const GameListItem* is
return 0; return 0;
} }
static std::unordered_map<std::string, std::string> LoadCustomTitles()
{
// Load custom game titles from titles.txt
// http://www.gametdb.com/Wii/Downloads
const std::string& load_directory = File::GetUserPath(D_LOAD_IDX);
std::ifstream titlestxt;
OpenFStream(titlestxt, load_directory + "titles.txt", std::ios::in);
if (!titlestxt.is_open())
OpenFStream(titlestxt, load_directory + "wiitdb.txt", std::ios::in);
if (!titlestxt.is_open())
return {};
std::unordered_map<std::string, std::string> custom_titles;
std::string line;
while (!titlestxt.eof() && std::getline(titlestxt, line))
{
const size_t equals_index = line.find('=');
if (equals_index != std::string::npos)
{
custom_titles.emplace(StripSpaces(line.substr(0, equals_index)),
StripSpaces(line.substr(equals_index + 1)));
}
}
return custom_titles;
}
static std::vector<std::string> GetFileSearchExtensions() static std::vector<std::string> GetFileSearchExtensions()
{ {
std::vector<std::string> extensions; std::vector<std::string> extensions;
@ -665,7 +635,7 @@ void CGameListCtrl::ScanForISOs()
{ {
m_ISOFiles.clear(); m_ISOFiles.clear();
const auto custom_titles = LoadCustomTitles(); const Core::TitleDatabase title_database;
auto rFilenames = auto rFilenames =
Common::DoFileSearch(GetFileSearchExtensions(), SConfig::GetInstance().m_ISOFolder, Common::DoFileSearch(GetFileSearchExtensions(), SConfig::GetInstance().m_ISOFolder,
SConfig::GetInstance().m_RecursiveISOFolder); SConfig::GetInstance().m_RecursiveISOFolder);
@ -688,7 +658,7 @@ void CGameListCtrl::ScanForISOs()
if (dialog.WasCancelled()) if (dialog.WasCancelled())
break; break;
auto iso_file = std::make_unique<GameListItem>(rFilenames[i], custom_titles); auto iso_file = std::make_unique<GameListItem>(rFilenames[i], title_database);
if (iso_file->IsValid() && ShouldDisplayGameListItem(*iso_file)) if (iso_file->IsValid() && ShouldDisplayGameListItem(*iso_file))
{ {
@ -703,7 +673,7 @@ void CGameListCtrl::ScanForISOs()
for (const auto& drive : drives) for (const auto& drive : drives)
{ {
auto gli = std::make_unique<GameListItem>(drive, custom_titles); auto gli = std::make_unique<GameListItem>(drive, title_database);
if (gli->IsValid()) if (gli->IsValid())
m_ISOFiles.push_back(std::move(gli)); m_ISOFiles.push_back(std::move(gli));

View File

@ -29,6 +29,7 @@
#include "Core/Boot/Boot.h" #include "Core/Boot/Boot.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/IOS/ES/Formats.h" #include "Core/IOS/ES/Formats.h"
#include "Core/TitleDatabase.h"
#include "DiscIO/Blob.h" #include "DiscIO/Blob.h"
#include "DiscIO/Enums.h" #include "DiscIO/Enums.h"
@ -62,8 +63,7 @@ static std::string GetLanguageString(DiscIO::Language language,
return ""; return "";
} }
GameListItem::GameListItem(const std::string& _rFileName, GameListItem::GameListItem(const std::string& _rFileName, const Core::TitleDatabase& title_database)
const std::unordered_map<std::string, std::string>& custom_titles)
: m_FileName(_rFileName), m_title_id(0), m_emu_state(0), m_FileSize(0), : m_FileName(_rFileName), m_title_id(0), m_emu_state(0), m_FileSize(0),
m_region(DiscIO::Region::UNKNOWN_REGION), m_Country(DiscIO::Country::COUNTRY_UNKNOWN), m_region(DiscIO::Region::UNKNOWN_REGION), m_Country(DiscIO::Country::COUNTRY_UNKNOWN),
m_Revision(0), m_Valid(false), m_ImageWidth(0), m_ImageHeight(0), m_disc_number(0), m_Revision(0), m_Valid(false), m_ImageWidth(0), m_ImageHeight(0), m_disc_number(0),
@ -125,18 +125,10 @@ GameListItem::GameListItem(const std::string& _rFileName,
if (IsValid()) if (IsValid())
{ {
std::string short_game_id = m_game_id; const auto type = m_Platform == DiscIO::Platform::WII_WAD ?
Core::TitleDatabase::TitleType::Channel :
// Ignore publisher ID for WAD files Core::TitleDatabase::TitleType::Other;
if (m_Platform == DiscIO::Platform::WII_WAD && short_game_id.size() > 4) m_custom_name_titles_txt = title_database.GetTitleName(m_game_id, type);
short_game_id.erase(4);
auto it = custom_titles.find(short_game_id);
if (it != custom_titles.end())
{
m_custom_name_titles_txt = it->second;
}
ReloadINI(); ReloadINI();
} }

View File

@ -5,7 +5,6 @@
#pragma once #pragma once
#include <string> #include <string>
#include <unordered_map>
#include <utility> #include <utility>
#include <vector> #include <vector>
@ -14,6 +13,11 @@
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/image.h> #include <wx/image.h>
namespace Core
{
class TitleDatabase;
}
namespace DiscIO namespace DiscIO
{ {
enum class BlobType; enum class BlobType;
@ -28,8 +32,7 @@ class PointerWrap;
class GameListItem class GameListItem
{ {
public: public:
GameListItem(const std::string& _rFileName, GameListItem(const std::string& file_name, const Core::TitleDatabase& title_database);
const std::unordered_map<std::string, std::string>& custom_titles);
~GameListItem(); ~GameListItem();
// Reload settings after INI changes // Reload settings after INI changes