diff options
| author | 2023-11-04 23:26:24 -0400 | |
|---|---|---|
| committer | 2023-11-04 23:26:24 -0400 | |
| commit | 770d4b0b721be88bea327c8164b1f62ffbcc1d90 (patch) | |
| tree | f45c4f1525d92af472806507bbbe778f03da18a8 /src | |
| parent | Merge pull request #11963 from Kelebek1/eol_lf (diff) | |
| parent | core: hid: Signal color updates (diff) | |
| download | yuzu-770d4b0b721be88bea327c8164b1f62ffbcc1d90.tar.gz yuzu-770d4b0b721be88bea327c8164b1f62ffbcc1d90.tar.xz yuzu-770d4b0b721be88bea327c8164b1f62ffbcc1d90.zip | |
Merge pull request #11965 from german77/color
core: hid: Signal color updates
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 37 | ||||
| -rw-r--r-- | src/core/hid/emulated_controller.h | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.cpp | 8 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.h | 8 |
5 files changed, 42 insertions, 16 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 8e2894449..b08a71446 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -96,18 +96,7 @@ void EmulatedController::ReloadFromSettings() { | |||
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | controller.color_values = {}; | 98 | controller.color_values = {}; |
| 99 | controller.colors_state.fullkey = { | 99 | ReloadColorsFromSettings(); |
| 100 | .body = GetNpadColor(player.body_color_left), | ||
| 101 | .button = GetNpadColor(player.button_color_left), | ||
| 102 | }; | ||
| 103 | controller.colors_state.left = { | ||
| 104 | .body = GetNpadColor(player.body_color_left), | ||
| 105 | .button = GetNpadColor(player.button_color_left), | ||
| 106 | }; | ||
| 107 | controller.colors_state.right = { | ||
| 108 | .body = GetNpadColor(player.body_color_right), | ||
| 109 | .button = GetNpadColor(player.button_color_right), | ||
| 110 | }; | ||
| 111 | 100 | ||
| 112 | ring_params[0] = Common::ParamPackage(Settings::values.ringcon_analogs); | 101 | ring_params[0] = Common::ParamPackage(Settings::values.ringcon_analogs); |
| 113 | 102 | ||
| @@ -128,6 +117,30 @@ void EmulatedController::ReloadFromSettings() { | |||
| 128 | ReloadInput(); | 117 | ReloadInput(); |
| 129 | } | 118 | } |
| 130 | 119 | ||
| 120 | void EmulatedController::ReloadColorsFromSettings() { | ||
| 121 | const auto player_index = NpadIdTypeToIndex(npad_id_type); | ||
| 122 | const auto& player = Settings::values.players.GetValue()[player_index]; | ||
| 123 | |||
| 124 | // Avoid updating colors if overridden by physical controller | ||
| 125 | if (controller.color_values[LeftIndex].body != 0 && | ||
| 126 | controller.color_values[RightIndex].body != 0) { | ||
| 127 | return; | ||
| 128 | } | ||
| 129 | |||
| 130 | controller.colors_state.fullkey = { | ||
| 131 | .body = GetNpadColor(player.body_color_left), | ||
| 132 | .button = GetNpadColor(player.button_color_left), | ||
| 133 | }; | ||
| 134 | controller.colors_state.left = { | ||
| 135 | .body = GetNpadColor(player.body_color_left), | ||
| 136 | .button = GetNpadColor(player.button_color_left), | ||
| 137 | }; | ||
| 138 | controller.colors_state.right = { | ||
| 139 | .body = GetNpadColor(player.body_color_right), | ||
| 140 | .button = GetNpadColor(player.button_color_right), | ||
| 141 | }; | ||
| 142 | } | ||
| 143 | |||
| 131 | void EmulatedController::LoadDevices() { | 144 | void EmulatedController::LoadDevices() { |
| 132 | // TODO(german77): Use more buttons to detect the correct device | 145 | // TODO(german77): Use more buttons to detect the correct device |
| 133 | const auto left_joycon = button_params[Settings::NativeButton::DRight]; | 146 | const auto left_joycon = button_params[Settings::NativeButton::DRight]; |
diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h index d4500583e..ea18c2343 100644 --- a/src/core/hid/emulated_controller.h +++ b/src/core/hid/emulated_controller.h | |||
| @@ -253,6 +253,9 @@ public: | |||
| 253 | /// Overrides current mapped devices with the stored configuration and reloads all input devices | 253 | /// Overrides current mapped devices with the stored configuration and reloads all input devices |
| 254 | void ReloadFromSettings(); | 254 | void ReloadFromSettings(); |
| 255 | 255 | ||
| 256 | /// Updates current colors with the ones stored in the configuration | ||
| 257 | void ReloadColorsFromSettings(); | ||
| 258 | |||
| 256 | /// Saves the current mapped configuration | 259 | /// Saves the current mapped configuration |
| 257 | void SaveCurrentConfig(); | 260 | void SaveCurrentConfig(); |
| 258 | 261 | ||
diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index 3dcad2701..02e23cce6 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp | |||
| @@ -152,7 +152,7 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem, | |||
| 152 | connect(player_controllers[0], &ConfigureInputPlayer::HandheldStateChanged, | 152 | connect(player_controllers[0], &ConfigureInputPlayer::HandheldStateChanged, |
| 153 | [this](bool is_handheld) { UpdateDockedState(is_handheld); }); | 153 | [this](bool is_handheld) { UpdateDockedState(is_handheld); }); |
| 154 | 154 | ||
| 155 | advanced = new ConfigureInputAdvanced(this); | 155 | advanced = new ConfigureInputAdvanced(hid_core, this); |
| 156 | ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced)); | 156 | ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced)); |
| 157 | ui->tabAdvanced->layout()->addWidget(advanced); | 157 | ui->tabAdvanced->layout()->addWidget(advanced); |
| 158 | 158 | ||
diff --git a/src/yuzu/configuration/configure_input_advanced.cpp b/src/yuzu/configuration/configure_input_advanced.cpp index 3cfd5d439..441cea3f6 100644 --- a/src/yuzu/configuration/configure_input_advanced.cpp +++ b/src/yuzu/configuration/configure_input_advanced.cpp | |||
| @@ -4,11 +4,13 @@ | |||
| 4 | #include <QColorDialog> | 4 | #include <QColorDialog> |
| 5 | #include "common/settings.h" | 5 | #include "common/settings.h" |
| 6 | #include "core/core.h" | 6 | #include "core/core.h" |
| 7 | #include "core/hid/emulated_controller.h" | ||
| 8 | #include "core/hid/hid_core.h" | ||
| 7 | #include "ui_configure_input_advanced.h" | 9 | #include "ui_configure_input_advanced.h" |
| 8 | #include "yuzu/configuration/configure_input_advanced.h" | 10 | #include "yuzu/configuration/configure_input_advanced.h" |
| 9 | 11 | ||
| 10 | ConfigureInputAdvanced::ConfigureInputAdvanced(QWidget* parent) | 12 | ConfigureInputAdvanced::ConfigureInputAdvanced(Core::HID::HIDCore& hid_core_, QWidget* parent) |
| 11 | : QWidget(parent), ui(std::make_unique<Ui::ConfigureInputAdvanced>()) { | 13 | : QWidget(parent), ui(std::make_unique<Ui::ConfigureInputAdvanced>()), hid_core{hid_core_} { |
| 12 | ui->setupUi(this); | 14 | ui->setupUi(this); |
| 13 | 15 | ||
| 14 | controllers_color_buttons = {{ | 16 | controllers_color_buttons = {{ |
| @@ -123,6 +125,8 @@ void ConfigureInputAdvanced::ApplyConfiguration() { | |||
| 123 | player.button_color_left = colors[1]; | 125 | player.button_color_left = colors[1]; |
| 124 | player.body_color_right = colors[2]; | 126 | player.body_color_right = colors[2]; |
| 125 | player.button_color_right = colors[3]; | 127 | player.button_color_right = colors[3]; |
| 128 | |||
| 129 | hid_core.GetEmulatedControllerByIndex(player_idx)->ReloadColorsFromSettings(); | ||
| 126 | } | 130 | } |
| 127 | 131 | ||
| 128 | Settings::values.debug_pad_enabled = ui->debug_enabled->isChecked(); | 132 | Settings::values.debug_pad_enabled = ui->debug_enabled->isChecked(); |
diff --git a/src/yuzu/configuration/configure_input_advanced.h b/src/yuzu/configuration/configure_input_advanced.h index fc1230284..41f822c4a 100644 --- a/src/yuzu/configuration/configure_input_advanced.h +++ b/src/yuzu/configuration/configure_input_advanced.h | |||
| @@ -14,11 +14,15 @@ namespace Ui { | |||
| 14 | class ConfigureInputAdvanced; | 14 | class ConfigureInputAdvanced; |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | namespace Core::HID { | ||
| 18 | class HIDCore; | ||
| 19 | } // namespace Core::HID | ||
| 20 | |||
| 17 | class ConfigureInputAdvanced : public QWidget { | 21 | class ConfigureInputAdvanced : public QWidget { |
| 18 | Q_OBJECT | 22 | Q_OBJECT |
| 19 | 23 | ||
| 20 | public: | 24 | public: |
| 21 | explicit ConfigureInputAdvanced(QWidget* parent = nullptr); | 25 | explicit ConfigureInputAdvanced(Core::HID::HIDCore& hid_core_, QWidget* parent = nullptr); |
| 22 | ~ConfigureInputAdvanced() override; | 26 | ~ConfigureInputAdvanced() override; |
| 23 | 27 | ||
| 24 | void ApplyConfiguration(); | 28 | void ApplyConfiguration(); |
| @@ -44,4 +48,6 @@ private: | |||
| 44 | 48 | ||
| 45 | std::array<std::array<QColor, 4>, 8> controllers_colors; | 49 | std::array<std::array<QColor, 4>, 8> controllers_colors; |
| 46 | std::array<std::array<QPushButton*, 4>, 8> controllers_color_buttons; | 50 | std::array<std::array<QPushButton*, 4>, 8> controllers_color_buttons; |
| 51 | |||
| 52 | Core::HID::HIDCore& hid_core; | ||
| 47 | }; | 53 | }; |