summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src/InputConfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/Src/InputConfig.cpp')
-rw-r--r--Source/Core/InputCommon/Src/InputConfig.cpp47
1 files changed, 44 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/Src/InputConfig.cpp b/Source/Core/InputCommon/Src/InputConfig.cpp
index b9d2a93b99..1988a9ebb7 100644
--- a/Source/Core/InputCommon/Src/InputConfig.cpp
+++ b/Source/Core/InputCommon/Src/InputConfig.cpp
@@ -16,6 +16,7 @@
// http://code.google.com/p/dolphin-emu/
#include "InputConfig.h"
+#include "../../Core/Src/ConfigManager.h"
InputPlugin::~InputPlugin()
{
@@ -26,18 +27,58 @@ InputPlugin::~InputPlugin()
delete *i;
}
-bool InputPlugin::LoadConfig()
+bool InputPlugin::LoadConfig(bool isGC)
{
IniFile inifile;
+ IniFile game_ini;
+ bool useProfile[4] = {false, false, false, false};
+ std::string num[4] = {"1", "2", "3", "4"};
+ std::string profile[4];
+ std::string path;
+
+ if (SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() != "00000000")
+ {
+ std::string type;
+ if (isGC)
+ {
+ type = "Pad";
+ path = "Profiles/GCPad/";
+ }
+ else
+ {
+ type = "Wiimote";
+ path = "Profiles/Wiimote/";
+ }
+ game_ini.Load(File::GetUserPath(D_GAMECONFIG_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini");
+ for (int i = 0; i < 4; i++)
+ {
+ if (game_ini.Exists("Controls", (type + "Profile" + num[i]).c_str()))
+ {
+ game_ini.Get("Controls", (type + "Profile" + num[i]).c_str(), &profile[i]);
+ if (File::Exists(File::GetUserPath(D_CONFIG_IDX) + path + profile[i] + ".ini"))
+ useProfile[i] = true;
+ else
+ PanicAlertT("Selected controller profile does not exist");
+ }
+ }
+ }
+
if (inifile.Load(File::GetUserPath(D_CONFIG_IDX) + ini_name + ".ini"))
{
std::vector< ControllerEmu* >::const_iterator
i = controllers.begin(),
e = controllers.end();
- for (; i!=e; ++i)
+ for (int n = 0; i!=e; ++i, ++n)
{
// load settings from ini
- (*i)->LoadConfig(inifile.GetOrCreateSection((*i)->GetName().c_str()));
+ if (useProfile[n])
+ {
+ IniFile profile_ini;
+ profile_ini.Load(File::GetUserPath(D_CONFIG_IDX) + path + profile[n] + ".ini");
+ (*i)->LoadConfig(profile_ini.GetOrCreateSection("Profile"));
+ }
+ else
+ (*i)->LoadConfig(inifile.GetOrCreateSection((*i)->GetName().c_str()));
// update refs
(*i)->UpdateReferences(g_controller_interface);
}