mirror of https://github.com/PCSX2/pcsx2.git
VMManager: Support per-game controller settings
Global bindings will be ignored in such a case.
This commit is contained in:
parent
2e303da384
commit
be3f120548
|
@ -439,8 +439,13 @@ bool VMManager::UpdateGameSettingsLayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string input_profile_name;
|
std::string input_profile_name;
|
||||||
|
bool use_game_settings_for_controller = false;
|
||||||
if (new_interface)
|
if (new_interface)
|
||||||
|
{
|
||||||
|
new_interface->GetBoolValue("Pad", "UseGameSettingsForController", &use_game_settings_for_controller);
|
||||||
|
if (!use_game_settings_for_controller)
|
||||||
new_interface->GetStringValue("EmuCore", "InputProfileName", &input_profile_name);
|
new_interface->GetStringValue("EmuCore", "InputProfileName", &input_profile_name);
|
||||||
|
}
|
||||||
|
|
||||||
if (!s_game_settings_interface && !new_interface && s_input_profile_name == input_profile_name)
|
if (!s_game_settings_interface && !new_interface && s_input_profile_name == input_profile_name)
|
||||||
return false;
|
return false;
|
||||||
|
@ -449,6 +454,8 @@ bool VMManager::UpdateGameSettingsLayer()
|
||||||
s_game_settings_interface = std::move(new_interface);
|
s_game_settings_interface = std::move(new_interface);
|
||||||
|
|
||||||
std::unique_ptr<INISettingsInterface> input_interface;
|
std::unique_ptr<INISettingsInterface> input_interface;
|
||||||
|
if (!use_game_settings_for_controller)
|
||||||
|
{
|
||||||
if (!input_profile_name.empty())
|
if (!input_profile_name.empty())
|
||||||
{
|
{
|
||||||
const std::string filename(GetInputProfilePath(input_profile_name));
|
const std::string filename(GetInputProfilePath(input_profile_name));
|
||||||
|
@ -471,10 +478,15 @@ bool VMManager::UpdateGameSettingsLayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
Host::Internal::SetInputSettingsLayer(input_interface.get());
|
Host::Internal::SetInputSettingsLayer(input_interface.get());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// using game settings for bindings too
|
||||||
|
Host::Internal::SetInputSettingsLayer(s_game_settings_interface.get());
|
||||||
|
}
|
||||||
|
|
||||||
s_input_settings_interface = std::move(input_interface);
|
s_input_settings_interface = std::move(input_interface);
|
||||||
s_input_profile_name = std::move(input_profile_name);
|
s_input_profile_name = std::move(input_profile_name);
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue