diff options
| author | 2021-10-30 22:23:10 -0500 | |
|---|---|---|
| committer | 2021-11-24 20:30:26 -0600 | |
| commit | 2b1b0c2a30e242b08ec120e09803ec54d5445703 (patch) | |
| tree | 9a10400a7e4403b288eee3aae8a52f1d5be912de /src/input_common/helpers/stick_from_buttons.cpp | |
| parent | input_common: Revert deleted TAS functions (diff) | |
| download | yuzu-2b1b0c2a30e242b08ec120e09803ec54d5445703.tar.gz yuzu-2b1b0c2a30e242b08ec120e09803ec54d5445703.tar.xz yuzu-2b1b0c2a30e242b08ec120e09803ec54d5445703.zip | |
kraken: Address comments from review
start lion review
Diffstat (limited to 'src/input_common/helpers/stick_from_buttons.cpp')
| -rw-r--r-- | src/input_common/helpers/stick_from_buttons.cpp | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/src/input_common/helpers/stick_from_buttons.cpp b/src/input_common/helpers/stick_from_buttons.cpp index 806a0e8bb..1d5948f79 100644 --- a/src/input_common/helpers/stick_from_buttons.cpp +++ b/src/input_common/helpers/stick_from_buttons.cpp | |||
| @@ -10,25 +10,27 @@ | |||
| 10 | 10 | ||
| 11 | namespace InputCommon { | 11 | namespace InputCommon { |
| 12 | 12 | ||
| 13 | class Stick final : public Input::InputDevice { | 13 | class Stick final : public Common::Input::InputDevice { |
| 14 | public: | 14 | public: |
| 15 | using Button = std::unique_ptr<Input::InputDevice>; | 15 | using Button = std::unique_ptr<Common::Input::InputDevice>; |
| 16 | 16 | ||
| 17 | Stick(Button up_, Button down_, Button left_, Button right_, Button modifier_, | 17 | Stick(Button up_, Button down_, Button left_, Button right_, Button modifier_, |
| 18 | float modifier_scale_, float modifier_angle_) | 18 | float modifier_scale_, float modifier_angle_) |
| 19 | : up(std::move(up_)), down(std::move(down_)), left(std::move(left_)), | 19 | : up(std::move(up_)), down(std::move(down_)), left(std::move(left_)), |
| 20 | right(std::move(right_)), modifier(std::move(modifier_)), modifier_scale(modifier_scale_), | 20 | right(std::move(right_)), modifier(std::move(modifier_)), modifier_scale(modifier_scale_), |
| 21 | modifier_angle(modifier_angle_) { | 21 | modifier_angle(modifier_angle_) { |
| 22 | Input::InputCallback button_up_callback{ | 22 | Common::Input::InputCallback button_up_callback{ |
| 23 | [this](Input::CallbackStatus callback_) { UpdateUpButtonStatus(callback_); }}; | 23 | [this](Common::Input::CallbackStatus callback_) { UpdateUpButtonStatus(callback_); }}; |
| 24 | Input::InputCallback button_down_callback{ | 24 | Common::Input::InputCallback button_down_callback{ |
| 25 | [this](Input::CallbackStatus callback_) { UpdateDownButtonStatus(callback_); }}; | 25 | [this](Common::Input::CallbackStatus callback_) { UpdateDownButtonStatus(callback_); }}; |
| 26 | Input::InputCallback button_left_callback{ | 26 | Common::Input::InputCallback button_left_callback{ |
| 27 | [this](Input::CallbackStatus callback_) { UpdateLeftButtonStatus(callback_); }}; | 27 | [this](Common::Input::CallbackStatus callback_) { UpdateLeftButtonStatus(callback_); }}; |
| 28 | Input::InputCallback button_right_callback{ | 28 | Common::Input::InputCallback button_right_callback{ |
| 29 | [this](Input::CallbackStatus callback_) { UpdateRightButtonStatus(callback_); }}; | 29 | [this](Common::Input::CallbackStatus callback_) { |
| 30 | Input::InputCallback button_modifier_callback{ | 30 | UpdateRightButtonStatus(callback_); |
| 31 | [this](Input::CallbackStatus callback_) { UpdateModButtonStatus(callback_); }}; | 31 | }}; |
| 32 | Common::Input::InputCallback button_modifier_callback{ | ||
| 33 | [this](Common::Input::CallbackStatus callback_) { UpdateModButtonStatus(callback_); }}; | ||
| 32 | up->SetCallback(button_up_callback); | 34 | up->SetCallback(button_up_callback); |
| 33 | down->SetCallback(button_down_callback); | 35 | down->SetCallback(button_down_callback); |
| 34 | left->SetCallback(button_left_callback); | 36 | left->SetCallback(button_left_callback); |
| @@ -129,27 +131,27 @@ public: | |||
| 129 | } | 131 | } |
| 130 | } | 132 | } |
| 131 | 133 | ||
| 132 | void UpdateUpButtonStatus(Input::CallbackStatus button_callback) { | 134 | void UpdateUpButtonStatus(Common::Input::CallbackStatus button_callback) { |
| 133 | up_status = button_callback.button_status.value; | 135 | up_status = button_callback.button_status.value; |
| 134 | UpdateStatus(); | 136 | UpdateStatus(); |
| 135 | } | 137 | } |
| 136 | 138 | ||
| 137 | void UpdateDownButtonStatus(Input::CallbackStatus button_callback) { | 139 | void UpdateDownButtonStatus(Common::Input::CallbackStatus button_callback) { |
| 138 | down_status = button_callback.button_status.value; | 140 | down_status = button_callback.button_status.value; |
| 139 | UpdateStatus(); | 141 | UpdateStatus(); |
| 140 | } | 142 | } |
| 141 | 143 | ||
| 142 | void UpdateLeftButtonStatus(Input::CallbackStatus button_callback) { | 144 | void UpdateLeftButtonStatus(Common::Input::CallbackStatus button_callback) { |
| 143 | left_status = button_callback.button_status.value; | 145 | left_status = button_callback.button_status.value; |
| 144 | UpdateStatus(); | 146 | UpdateStatus(); |
| 145 | } | 147 | } |
| 146 | 148 | ||
| 147 | void UpdateRightButtonStatus(Input::CallbackStatus button_callback) { | 149 | void UpdateRightButtonStatus(Common::Input::CallbackStatus button_callback) { |
| 148 | right_status = button_callback.button_status.value; | 150 | right_status = button_callback.button_status.value; |
| 149 | UpdateStatus(); | 151 | UpdateStatus(); |
| 150 | } | 152 | } |
| 151 | 153 | ||
| 152 | void UpdateModButtonStatus(Input::CallbackStatus button_callback) { | 154 | void UpdateModButtonStatus(Common::Input::CallbackStatus button_callback) { |
| 153 | modifier_status = button_callback.button_status.value; | 155 | modifier_status = button_callback.button_status.value; |
| 154 | UpdateStatus(); | 156 | UpdateStatus(); |
| 155 | } | 157 | } |
| @@ -193,8 +195,8 @@ public: | |||
| 193 | } | 195 | } |
| 194 | 196 | ||
| 195 | last_update = now; | 197 | last_update = now; |
| 196 | Input::CallbackStatus status{ | 198 | Common::Input::CallbackStatus status{ |
| 197 | .type = Input::InputType::Stick, | 199 | .type = Common::Input::InputType::Stick, |
| 198 | .stick_status = GetStatus(), | 200 | .stick_status = GetStatus(), |
| 199 | }; | 201 | }; |
| 200 | TriggerOnChange(status); | 202 | TriggerOnChange(status); |
| @@ -209,15 +211,15 @@ public: | |||
| 209 | } | 211 | } |
| 210 | 212 | ||
| 211 | void SoftUpdate() override { | 213 | void SoftUpdate() override { |
| 212 | Input::CallbackStatus status{ | 214 | Common::Input::CallbackStatus status{ |
| 213 | .type = Input::InputType::Stick, | 215 | .type = Common::Input::InputType::Stick, |
| 214 | .stick_status = GetStatus(), | 216 | .stick_status = GetStatus(), |
| 215 | }; | 217 | }; |
| 216 | TriggerOnChange(status); | 218 | TriggerOnChange(status); |
| 217 | } | 219 | } |
| 218 | 220 | ||
| 219 | Input::StickStatus GetStatus() const { | 221 | Common::Input::StickStatus GetStatus() const { |
| 220 | Input::StickStatus status{}; | 222 | Common::Input::StickStatus status{}; |
| 221 | status.x.properties = properties; | 223 | status.x.properties = properties; |
| 222 | status.y.properties = properties; | 224 | status.y.properties = properties; |
| 223 | if (Settings::values.emulate_analog_keyboard) { | 225 | if (Settings::values.emulate_analog_keyboard) { |
| @@ -263,19 +265,23 @@ private: | |||
| 263 | bool left_status; | 265 | bool left_status; |
| 264 | bool right_status; | 266 | bool right_status; |
| 265 | bool modifier_status; | 267 | bool modifier_status; |
| 266 | const Input::AnalogProperties properties{0.0f, 1.0f, 0.5f, 0.0f, false}; | 268 | const Common::Input::AnalogProperties properties{0.0f, 1.0f, 0.5f, 0.0f, false}; |
| 267 | std::chrono::time_point<std::chrono::steady_clock> last_update; | 269 | std::chrono::time_point<std::chrono::steady_clock> last_update; |
| 268 | }; | 270 | }; |
| 269 | 271 | ||
| 270 | std::unique_ptr<Input::InputDevice> StickFromButton::Create(const Common::ParamPackage& params) { | 272 | std::unique_ptr<Common::Input::InputDevice> StickFromButton::Create( |
| 273 | const Common::ParamPackage& params) { | ||
| 271 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); | 274 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); |
| 272 | auto up = Input::CreateDeviceFromString<Input::InputDevice>(params.Get("up", null_engine)); | 275 | auto up = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( |
| 273 | auto down = Input::CreateDeviceFromString<Input::InputDevice>(params.Get("down", null_engine)); | 276 | params.Get("up", null_engine)); |
| 274 | auto left = Input::CreateDeviceFromString<Input::InputDevice>(params.Get("left", null_engine)); | 277 | auto down = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( |
| 275 | auto right = | 278 | params.Get("down", null_engine)); |
| 276 | Input::CreateDeviceFromString<Input::InputDevice>(params.Get("right", null_engine)); | 279 | auto left = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( |
| 277 | auto modifier = | 280 | params.Get("left", null_engine)); |
| 278 | Input::CreateDeviceFromString<Input::InputDevice>(params.Get("modifier", null_engine)); | 281 | auto right = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( |
| 282 | params.Get("right", null_engine)); | ||
| 283 | auto modifier = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | ||
| 284 | params.Get("modifier", null_engine)); | ||
| 279 | auto modifier_scale = params.Get("modifier_scale", 0.5f); | 285 | auto modifier_scale = params.Get("modifier_scale", 0.5f); |
| 280 | auto modifier_angle = params.Get("modifier_angle", 5.5f); | 286 | auto modifier_angle = params.Get("modifier_angle", 5.5f); |
| 281 | return std::make_unique<Stick>(std::move(up), std::move(down), std::move(left), | 287 | return std::make_unique<Stick>(std::move(up), std::move(down), std::move(left), |