diff --git a/src/qt_gui/control_settings.cpp b/src/qt_gui/control_settings.cpp index b16e94c3a..73622e6b0 100644 --- a/src/qt_gui/control_settings.cpp +++ b/src/qt_gui/control_settings.cpp @@ -138,7 +138,7 @@ void ControlSettings::SaveControllerConfig(bool CloseOnSave) { if (std::find(ControllerInputs.begin(), ControllerInputs.end(), input_string) != ControllerInputs.end() || - output_string == "analog_deadzone") { + output_string == "analog_deadzone" || output_string == "override_controller_color") { line.erase(); continue; } @@ -244,6 +244,14 @@ void ControlSettings::SaveControllerConfig(bool CloseOnSave) { deadzonevalue = std::to_string(ui->RightDeadzoneSlider->value()); lines.push_back("analog_deadzone = rightjoystick, " + deadzonevalue + ", 127"); + lines.push_back(""); + std::string OverrideLB = ui->LightbarCheckBox->isChecked() ? "true" : "false"; + std::string LightBarR = std::to_string(ui->RSlider->value()); + std::string LightBarG = std::to_string(ui->GSlider->value()); + std::string LightBarB = std::to_string(ui->BSlider->value()); + lines.push_back("override_controller_color = " + OverrideLB + ", " + LightBarR + ", " + + LightBarG + ", " + LightBarB); + std::vector save; bool CurrentLineEmpty = false, LastLineEmpty = false; for (auto const& line : lines) { @@ -260,6 +268,9 @@ void ControlSettings::SaveControllerConfig(bool CloseOnSave) { output_file.close(); Config::SetUseUnifiedInputConfig(!ui->PerGameCheckBox->isChecked()); + Config::SetOverrideControllerColor(ui->LightbarCheckBox->isChecked()); + Config::SetControllerCustomColor(ui->RSlider->value(), ui->GSlider->value(), + ui->BSlider->value()); Config::save(Common::FS::GetUserPath(Common::FS::PathType::UserDir) / "config.toml"); if (CloseOnSave) @@ -368,7 +379,7 @@ void ControlSettings::SetUIValuestoMappings() { if (std::find(ControllerInputs.begin(), ControllerInputs.end(), input_string) != ControllerInputs.end() || - output_string == "analog_deadzone") { + output_string == "analog_deadzone" || output_string == "override_controller_color") { if (input_string == "cross") { ui->ABox->setCurrentText(QString::fromStdString(output_string)); CrossExists = true; @@ -453,9 +464,45 @@ void ControlSettings::SetUIValuestoMappings() { ui->RightDeadzoneSlider->setValue(2); ui->RightDeadzoneValue->setText("2"); } + } else if (output_string == "override_controller_color") { + std::size_t comma_pos = line.find(','); + if (comma_pos != std::string::npos) { + std::string overridestring = line.substr(equal_pos + 1, comma_pos); + bool override = overridestring.contains("true") ? true : false; + ui->LightbarCheckBox->setChecked(override); + + std::string lightbarstring = line.substr(comma_pos + 1); + std::size_t comma_pos2 = lightbarstring.find(','); + if (comma_pos2 != std::string::npos) { + std::string Rstring = lightbarstring.substr(0, comma_pos2); + ui->RSlider->setValue(std::stoi(Rstring)); + QString RedValue = QString("%1").arg(std::stoi(Rstring), 3, 10, QChar('0')); + QString RValue = "R: " + RedValue; + ui->RLabel->setText(RValue); + } + + std::string GBstring = lightbarstring.substr(comma_pos2 + 1); + std::size_t comma_pos3 = GBstring.find(','); + if (comma_pos3 != std::string::npos) { + std::string Gstring = GBstring.substr(0, comma_pos3); + ui->GSlider->setValue(std::stoi(Gstring)); + QString GreenValue = + QString("%1").arg(std::stoi(Gstring), 3, 10, QChar('0')); + QString GValue = "G: " + GreenValue; + ui->GLabel->setText(GValue); + + std::string Bstring = GBstring.substr(comma_pos3 + 1); + ui->BSlider->setValue(std::stoi(Bstring)); + QString BlueValue = + QString("%1").arg(std::stoi(Bstring), 3, 10, QChar('0')); + QString BValue = "B: " + BlueValue; + ui->BLabel->setText(BValue); + } + } } } } + file.close(); // If an entry does not exist in the config file, we assume the user wants it unmapped if (!CrossExists) @@ -507,8 +554,6 @@ void ControlSettings::SetUIValuestoMappings() { ui->RStickUpBox->setCurrentText("unmapped"); ui->RStickDownBox->setCurrentText("unmapped"); } - - file.close(); } void ControlSettings::GetGameTitle() { diff --git a/src/qt_gui/control_settings.ui b/src/qt_gui/control_settings.ui index 8cb88133f..0db44647f 100644 --- a/src/qt_gui/control_settings.ui +++ b/src/qt_gui/control_settings.ui @@ -10,7 +10,7 @@ 0 0 1043 - 822 + 792 @@ -22,21 +22,26 @@ - - - 0 + + + true - - - Controller Remapping - - + + + + 0 + 0 + 1019 + 732 + + + - 10 - 10 - 1004 - 711 + 0 + 0 + 1021 + 731