summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2024-02-04 15:29:36 +0100
committerJosJuice <josjuice@gmail.com>2024-02-04 16:46:10 +0100
commit2bcf70af3f4b80870d93b17c367c9822a6ba4f41 (patch)
tree213e9ad1f6804715d323cda8a98729d4f1e7057c /Source/Core/InputCommon
parentd96d2cd68c60415d5658ffa27496e47b2dce7c72 (diff)
InputCommon: Refactor away InputConfig::LoadConfig's switch case
By having getters for this information, other code that needs access to the same information can call the getters instead of duplicating the information.
Diffstat (limited to 'Source/Core/InputCommon')
-rw-r--r--Source/Core/InputCommon/InputConfig.cpp64
-rw-r--r--Source/Core/InputCommon/InputConfig.h16
2 files changed, 50 insertions, 30 deletions
diff --git a/Source/Core/InputCommon/InputConfig.cpp b/Source/Core/InputCommon/InputConfig.cpp
index f372fa3c1f..0acd67c392 100644
--- a/Source/Core/InputCommon/InputConfig.cpp
+++ b/Source/Core/InputCommon/InputConfig.cpp
@@ -20,57 +20,40 @@
#include "InputCommon/InputProfile.h"
InputConfig::InputConfig(const std::string& ini_name, const std::string& gui_name,
- const std::string& profile_name)
- : m_ini_name(ini_name), m_gui_name(gui_name), m_profile_name(profile_name)
+ const std::string& profile_name, InputClass input_class)
+ : m_ini_name(ini_name), m_gui_name(gui_name), m_profile_name(profile_name),
+ m_input_class(input_class)
{
}
InputConfig::~InputConfig() = default;
-bool InputConfig::LoadConfig(InputClass type)
+bool InputConfig::LoadConfig()
{
Common::IniFile inifile;
bool useProfile[MAX_BBMOTES] = {false, false, false, false, false};
static constexpr std::array<std::string_view, MAX_BBMOTES> num = {"1", "2", "3", "4", "BB"};
std::string profile[MAX_BBMOTES];
- std::string path;
m_dynamic_input_tex_config_manager.Load();
if (SConfig::GetInstance().GetGameID() != "00000000")
{
- std::string type_str;
- switch (type)
- {
- case InputClass::GBA:
- type_str = "GBA";
- path = "Profiles/GBA/";
- break;
- case InputClass::Wii:
- type_str = "Wiimote";
- path = "Profiles/Wiimote/";
- break;
- case InputClass::GC:
- default:
- type_str = "Pad";
- path = "Profiles/GCPad/";
- break;
- }
+ const std::string profile_directory = GetProfileDirectoryPath();
Common::IniFile game_ini = SConfig::GetInstance().LoadGameIni();
auto* control_section = game_ini.GetOrCreateSection("Controls");
for (int i = 0; i < 4; i++)
{
- const auto profile_name = fmt::format("{}Profile{}", type_str, num[i]);
+ const auto profile_name = fmt::format("{}Profile{}", GetProfileKey(), num[i]);
if (control_section->Exists(profile_name))
{
std::string profile_setting;
if (control_section->Get(profile_name, &profile_setting))
{
- auto profiles = InputProfile::GetProfilesFromSetting(
- profile_setting, File::GetUserPath(D_CONFIG_IDX) + path);
+ auto profiles = InputProfile::GetProfilesFromSetting(profile_setting, profile_directory);
if (profiles.empty())
{
@@ -176,6 +159,39 @@ bool InputConfig::ControllersNeedToBeCreated() const
return m_controllers.empty();
}
+std::string InputConfig::GetProfileKey() const
+{
+ switch (m_input_class)
+ {
+ case InputClass::GBA:
+ return "GBA";
+ case InputClass::Wii:
+ return "Wiimote";
+ case InputClass::GC:
+ default:
+ return "Pad";
+ }
+}
+
+std::string InputConfig::GetProfileDirectoryName() const
+{
+ switch (m_input_class)
+ {
+ case InputClass::GBA:
+ return "GBA";
+ case InputClass::Wii:
+ return "Wiimote";
+ case InputClass::GC:
+ default:
+ return "GCPad";
+ }
+}
+
+std::string InputConfig::GetProfileDirectoryPath() const
+{
+ return fmt::format("{}Profiles/{}/", File::GetUserPath(D_CONFIG_IDX), GetProfileDirectoryName());
+}
+
int InputConfig::GetControllerCount() const
{
return static_cast<int>(m_controllers.size());
diff --git a/Source/Core/InputCommon/InputConfig.h b/Source/Core/InputCommon/InputConfig.h
index a0d0203df6..85be1ad505 100644
--- a/Source/Core/InputCommon/InputConfig.h
+++ b/Source/Core/InputCommon/InputConfig.h
@@ -24,11 +24,6 @@ class EmulatedController;
class InputConfig
{
public:
- InputConfig(const std::string& ini_name, const std::string& gui_name,
- const std::string& profile_name);
-
- ~InputConfig();
-
enum class InputClass
{
GC,
@@ -36,7 +31,12 @@ public:
GBA,
};
- bool LoadConfig(InputClass type);
+ InputConfig(const std::string& ini_name, const std::string& gui_name,
+ const std::string& profile_name, InputClass input_class);
+
+ ~InputConfig();
+
+ bool LoadConfig();
void SaveConfig();
template <typename T, typename... Args>
@@ -52,6 +52,9 @@ public:
std::string GetGUIName() const { return m_gui_name; }
std::string GetProfileName() const { return m_profile_name; }
+ std::string GetProfileKey() const;
+ std::string GetProfileDirectoryName() const;
+ std::string GetProfileDirectoryPath() const;
int GetControllerCount() const;
// These should be used after creating all controllers and before clearing them, respectively.
@@ -66,5 +69,6 @@ private:
const std::string m_ini_name;
const std::string m_gui_name;
const std::string m_profile_name;
+ const InputClass m_input_class;
InputCommon::DynamicInputTextureManager m_dynamic_input_tex_config_manager;
};