summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2020-02-25 21:39:26 -0500
committerGravatar GitHub2020-02-25 21:39:26 -0500
commit01a05b48b72a76b3a709cc82f8e1a9dd52eef7cd (patch)
tree07873b2ad4cf4811ce1813fcd12bf06f74409811
parentMerge pull request #3461 from ReinUsesLisp/r32i-rt (diff)
parentanalog_from_button get direction implementation (diff)
downloadyuzu-01a05b48b72a76b3a709cc82f8e1a9dd52eef7cd.tar.gz
yuzu-01a05b48b72a76b3a709cc82f8e1a9dd52eef7cd.tar.xz
yuzu-01a05b48b72a76b3a709cc82f8e1a9dd52eef7cd.zip
Merge pull request #3431 from CJBok/npad-fix
InputCommon: analog_from_button get direction implementation
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp10
-rwxr-xr-xsrc/input_common/analog_from_button.cpp14
2 files changed, 19 insertions, 5 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index 15c09f04c..c1e32b28c 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -287,13 +287,13 @@ void Controller_NPad::RequestPadStateUpdate(u32 npad_id) {
287 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus( 287 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus(
288 Input::AnalogDirection::DOWN)); 288 Input::AnalogDirection::DOWN));
289 289
290 pad_state.r_stick_up.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
291 ->GetAnalogDirectionStatus(Input::AnalogDirection::RIGHT));
292 pad_state.r_stick_left.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
293 ->GetAnalogDirectionStatus(Input::AnalogDirection::LEFT));
294 pad_state.r_stick_right.Assign( 290 pad_state.r_stick_right.Assign(
295 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 291 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
296 ->GetAnalogDirectionStatus(Input::AnalogDirection::UP)); 292 ->GetAnalogDirectionStatus(Input::AnalogDirection::RIGHT));
293 pad_state.r_stick_left.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
294 ->GetAnalogDirectionStatus(Input::AnalogDirection::LEFT));
295 pad_state.r_stick_up.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
296 ->GetAnalogDirectionStatus(Input::AnalogDirection::UP));
297 pad_state.r_stick_down.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 297 pad_state.r_stick_down.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
298 ->GetAnalogDirectionStatus(Input::AnalogDirection::DOWN)); 298 ->GetAnalogDirectionStatus(Input::AnalogDirection::DOWN));
299 299
diff --git a/src/input_common/analog_from_button.cpp b/src/input_common/analog_from_button.cpp
index e1a260762..6cabdaa3c 100755
--- a/src/input_common/analog_from_button.cpp
+++ b/src/input_common/analog_from_button.cpp
@@ -34,6 +34,20 @@ public:
34 y * coef * (x == 0 ? 1.0f : SQRT_HALF)); 34 y * coef * (x == 0 ? 1.0f : SQRT_HALF));
35 } 35 }
36 36
37 bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override {
38 switch (direction) {
39 case Input::AnalogDirection::RIGHT:
40 return right->GetStatus();
41 case Input::AnalogDirection::LEFT:
42 return left->GetStatus();
43 case Input::AnalogDirection::UP:
44 return up->GetStatus();
45 case Input::AnalogDirection::DOWN:
46 return down->GetStatus();
47 }
48 return false;
49 }
50
37private: 51private:
38 Button up; 52 Button up;
39 Button down; 53 Button down;