Skip to content

Commit

Permalink
Merge pull request #5777 from JosJuice/unify-getgameinifilenames
Browse files Browse the repository at this point in the history
Unify GetGameIniFilenames
  • Loading branch information
JosJuice committed Jul 12, 2017
2 parents ab5a5ee + d4f5038 commit 100b0a5
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 39 deletions.
15 changes: 11 additions & 4 deletions Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <array>
#include <list>
#include <map>
#include <optional>
#include <sstream>
#include <string>
#include <tuple>
Expand All @@ -28,13 +29,17 @@

namespace ConfigLoaders
{
using ConfigLocation = Config::ConfigLocation;

// Returns all possible filenames in ascending order of priority
static std::vector<std::string> GetGameIniFilenames(const std::string& id, u16 revision)
std::vector<std::string> GetGameIniFilenames(const std::string& id, std::optional<u16> revision)
{
std::vector<std::string> filenames;

if (id.empty())
return filenames;

// INIs that match the system code (unique for each Virtual Console system)
filenames.push_back(id.substr(0, 1) + ".ini");

// INIs that match all regions
if (id.size() >= 4)
filenames.push_back(id.substr(0, 3) + ".ini");
Expand All @@ -43,11 +48,13 @@ static std::vector<std::string> GetGameIniFilenames(const std::string& id, u16 r
filenames.push_back(id + ".ini");

// INIs with specific revisions
filenames.push_back(id + StringFromFormat("r%d", revision) + ".ini");
if (revision)
filenames.push_back(id + StringFromFormat("r%d", *revision) + ".ini");

return filenames;
}

using ConfigLocation = Config::ConfigLocation;
using INIToLocationMap = std::map<std::pair<std::string, std::string>, ConfigLocation>;

// This is a mapping from the legacy section-key pairs to ConfigLocations.
Expand Down
4 changes: 4 additions & 0 deletions Source/Core/Core/ConfigLoaders/GameConfigLoader.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@

#include <cstring>
#include <memory>
#include <optional>
#include <string>
#include <vector>

#include "Common/CommonTypes.h"

Expand All @@ -17,6 +19,8 @@ class ConfigLayerLoader;

namespace ConfigLoaders
{
std::vector<std::string> GetGameIniFilenames(const std::string& id, std::optional<u16> revision);

std::unique_ptr<Config::ConfigLayerLoader> GenerateGlobalGameConfigLoader(const std::string& id,
u16 revision);
std::unique_ptr<Config::ConfigLayerLoader> GenerateLocalGameConfigLoader(const std::string& id,
Expand Down
35 changes: 5 additions & 30 deletions Source/Core/Core/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include "Core/Analytics.h"
#include "Core/Boot/Boot.h"
#include "Core/ConfigLoaders/GameConfigLoader.h"
#include "Core/Core.h"
#include "Core/FifoPlayer/FifoDataFile.h"
#include "Core/HLE/HLE.h"
Expand Down Expand Up @@ -1082,51 +1083,25 @@ IniFile SConfig::LoadGameIni() const
IniFile SConfig::LoadDefaultGameIni(const std::string& id, std::optional<u16> revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
for (const std::string& filename : ConfigLoaders::GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
return game_ini;
}

IniFile SConfig::LoadLocalGameIni(const std::string& id, std::optional<u16> revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
for (const std::string& filename : ConfigLoaders::GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}

IniFile SConfig::LoadGameIni(const std::string& id, std::optional<u16> revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
for (const std::string& filename : ConfigLoaders::GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
for (const std::string& filename : GetGameIniFilenames(id, revision))
for (const std::string& filename : ConfigLoaders::GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}

// Returns all possible filenames in ascending order of priority
std::vector<std::string> SConfig::GetGameIniFilenames(const std::string& id,
std::optional<u16> revision)
{
std::vector<std::string> filenames;

if (id.empty())
return filenames;

// INIs that match the system code (unique for each Virtual Console system)
filenames.push_back(id.substr(0, 1) + ".ini");

// INIs that match all regions
if (id.size() >= 4)
filenames.push_back(id.substr(0, 3) + ".ini");

// Regular INIs
filenames.push_back(id + ".ini");

// INIs with specific revisions
if (revision)
filenames.push_back(id + StringFromFormat("r%d", *revision) + ".ini");

return filenames;
}
3 changes: 0 additions & 3 deletions Source/Core/Core/ConfigManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,6 @@ struct SConfig : NonCopyable
static IniFile LoadLocalGameIni(const std::string& id, std::optional<u16> revision);
static IniFile LoadGameIni(const std::string& id, std::optional<u16> revision);

static std::vector<std::string> GetGameIniFilenames(const std::string& id,
std::optional<u16> revision);

std::string m_NANDPath;
std::string m_DumpPath;

Expand Down
5 changes: 3 additions & 2 deletions Source/Core/DolphinWX/ISOProperties/ISOProperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
#include "Common/FileUtil.h"
#include "Common/IniFile.h"
#include "Common/StringUtil.h"
#include "Core/ConfigLoaders/GameConfigLoader.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "Core/GeckoCodeConfig.h"
Expand Down Expand Up @@ -444,7 +445,7 @@ void CISOProperties::CreateGUIControls()

// If there is no default gameini, disable the button.
const std::vector<std::string> ini_names =
SConfig::GetGameIniFilenames(game_id, m_open_iso->GetRevision());
ConfigLoaders::GetGameIniFilenames(game_id, m_open_iso->GetRevision());
const bool game_ini_exists =
std::any_of(ini_names.cbegin(), ini_names.cend(), [](const std::string& name) {
return File::Exists(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + name);
Expand Down Expand Up @@ -752,7 +753,7 @@ void CISOProperties::OnChangeTitle(wxCommandEvent& event)
void CISOProperties::OnShowDefaultConfig(wxCommandEvent& WXUNUSED(event))
{
for (const std::string& filename :
SConfig::GetGameIniFilenames(game_id, m_open_iso->GetRevision()))
ConfigLoaders::GetGameIniFilenames(game_id, m_open_iso->GetRevision()))
{
std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename;
if (File::Exists(path))
Expand Down

0 comments on commit 100b0a5

Please sign in to comment.