Skip to content

Commit

Permalink
Allow setting different profiles for different controllers, and autom…
Browse files Browse the repository at this point in the history
…atically use the appropriate profile directory.
  • Loading branch information
RachelBryk committed Jan 9, 2013
1 parent b8691df commit e32b152
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 23 deletions.
8 changes: 1 addition & 7 deletions Source/Core/Core/Src/BootManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,6 @@ bool BootCore(const std::string& _rFilename)
}
}

if (game_ini.Exists("Core", "WiiProfile"))
game_ini.Get("Core", "WiiProfile", &StartUp.strWiiControllerProfile);
if (game_ini.Exists("Core", "GCProfile"))
game_ini.Get("Core", "GCProfile", &StartUp.strGCControllerProfile);

// Run the game
// Init the core
if (!Core::Init())
Expand All @@ -158,6 +153,7 @@ void Stop()

SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter;

StartUp.m_strUniqueID = "00000000";
if (config_cache.valid)
{
config_cache.valid = false;
Expand All @@ -173,8 +169,6 @@ void Stop()
StartUp.bDSPHLE = config_cache.bDSPHLE;
StartUp.bDisableWiimoteSpeaker = config_cache.bDisableWiimoteSpeaker;
StartUp.m_strVideoBackend = config_cache.strBackend;
StartUp.strGCControllerProfile = "";
StartUp.strWiiControllerProfile = "";
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
}
}
Expand Down
2 changes: 0 additions & 2 deletions Source/Core/Core/Src/CoreParameter.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,6 @@ struct SCoreStartupParameter
int iTheme;
int iPosX, iPosY, iWidth, iHeight;

std::string strGCControllerProfile;
std::string strWiiControllerProfile;
enum EBootBS2
{
BOOT_DEFAULT,
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/Src/HW/GCPad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ void Initialize(void* const hwnd)
g_controller_interface.Initialize();

// load the saved controller config
g_plugin.LoadConfig(SConfig::GetInstance().m_LocalCoreStartupParameter.strGCControllerProfile);
g_plugin.LoadConfig(true);
}

void GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/Src/HW/Wiimote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ void Initialize(void* const hwnd)
g_controller_interface.SetHwnd(hwnd);
g_controller_interface.Initialize();

g_plugin.LoadConfig(SConfig::GetInstance().m_LocalCoreStartupParameter.strWiiControllerProfile);
g_plugin.LoadConfig(false);

WiimoteReal::Initialize();

Expand Down
51 changes: 40 additions & 11 deletions Source/Core/InputCommon/Src/InputConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
// http://code.google.com/p/dolphin-emu/

#include "InputConfig.h"
#include "../../Core/Src/ConfigManager.h"

InputPlugin::~InputPlugin()
{
Expand All @@ -26,25 +27,53 @@ InputPlugin::~InputPlugin()
delete *i;
}

bool InputPlugin::LoadConfig(std::string ini)
bool InputPlugin::LoadConfig(bool isGC)
{
IniFile inifile;
std::string ini2 = ini;
if (ini == "")
ini = ini_name;
if (inifile.Load(File::GetUserPath(D_CONFIG_IDX) + ini + ".ini"))
IniFile game_ini;
bool useProfile[4] = {false, false, false, false};
std::string num[4] = {"1", "2", "3", "4"};
std::string profile[4];

if (SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() != "00000000")
{
std::string type;
if (isGC)
type = "GC";
else
type = "Wii";
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("Core", (type + "Profile" + num[i]).c_str()))
{
useProfile[i] = true;
game_ini.Get("Core", (type + "Profile" + num[i]).c_str(), &profile[i]);
}
}
}

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
std::string section;
section = (*i)->GetName();
if (ini2 != "")
section = "Profile";
(*i)->LoadConfig(inifile.GetOrCreateSection(section.c_str()));
if (useProfile[n])
{
IniFile profile_ini;
std::string path;
if (isGC)
path = "Profiles/GCPad/";
else
path = "Profiles/Wiimote/";
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);
}
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/InputCommon/Src/InputConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class InputPlugin

~InputPlugin();

bool LoadConfig(std::string ini);
bool LoadConfig(bool isGC);
void SaveConfig();

std::vector< ControllerEmu* > controllers;
Expand Down

0 comments on commit e32b152

Please sign in to comment.