|
|
|
@ -862,8 +862,13 @@ bool System::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->GetStringValue("ControllerPorts", "InputProfileName", &input_profile_name);
|
|
|
|
{
|
|
|
|
|
|
|
|
new_interface->GetBoolValue("ControllerPorts", "UseGameSettingsForController", &use_game_settings_for_controller);
|
|
|
|
|
|
|
|
if (!use_game_settings_for_controller)
|
|
|
|
|
|
|
|
new_interface->GetStringValue("ControllerPorts", "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;
|
|
|
|
@ -872,31 +877,39 @@ bool System::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 (!input_profile_name.empty())
|
|
|
|
if (!use_game_settings_for_controller)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const std::string filename(GetInputProfilePath(input_profile_name));
|
|
|
|
if (!input_profile_name.empty())
|
|
|
|
if (FileSystem::FileExists(filename.c_str()))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Log_InfoPrintf("Loading input profile from '%s'...", filename.c_str());
|
|
|
|
const std::string filename(GetInputProfilePath(input_profile_name));
|
|
|
|
input_interface = std::make_unique<INISettingsInterface>(std::move(filename));
|
|
|
|
if (FileSystem::FileExists(filename.c_str()))
|
|
|
|
if (!input_interface->Load())
|
|
|
|
{
|
|
|
|
|
|
|
|
Log_InfoPrintf("Loading input profile from '%s'...", filename.c_str());
|
|
|
|
|
|
|
|
input_interface = std::make_unique<INISettingsInterface>(std::move(filename));
|
|
|
|
|
|
|
|
if (!input_interface->Load())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Log_ErrorPrintf("Failed to parse input profile ini '%s'", input_interface->GetFileName().c_str());
|
|
|
|
|
|
|
|
input_interface.reset();
|
|
|
|
|
|
|
|
input_profile_name = {};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Log_ErrorPrintf("Failed to parse input profile ini '%s'", input_interface->GetFileName().c_str());
|
|
|
|
Log_InfoPrintf("No input profile found (tried '%s')", filename.c_str());
|
|
|
|
input_interface.reset();
|
|
|
|
|
|
|
|
input_profile_name = {};
|
|
|
|
input_profile_name = {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
Host::Internal::SetInputSettingsLayer(input_interface.get());
|
|
|
|
Log_InfoPrintf("No input profile found (tried '%s')", filename.c_str());
|
|
|
|
}
|
|
|
|
input_profile_name = {};
|
|
|
|
else
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
// using game settings for bindings too
|
|
|
|
|
|
|
|
Host::Internal::SetInputSettingsLayer(s_game_settings_interface.get());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Host::Internal::SetInputSettingsLayer(input_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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|