diff options
Diffstat (limited to 'src/core/frontend/input_interpreter.cpp')
| -rw-r--r-- | src/core/frontend/input_interpreter.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/core/frontend/input_interpreter.cpp b/src/core/frontend/input_interpreter.cpp index ec5fe660e..9f6a90e8f 100644 --- a/src/core/frontend/input_interpreter.cpp +++ b/src/core/frontend/input_interpreter.cpp | |||
| @@ -12,7 +12,9 @@ InputInterpreter::InputInterpreter(Core::System& system) | |||
| 12 | : npad{system.ServiceManager() | 12 | : npad{system.ServiceManager() |
| 13 | .GetService<Service::HID::Hid>("hid") | 13 | .GetService<Service::HID::Hid>("hid") |
| 14 | ->GetAppletResource() | 14 | ->GetAppletResource() |
| 15 | ->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad)} {} | 15 | ->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad)} { |
| 16 | ResetButtonStates(); | ||
| 17 | } | ||
| 16 | 18 | ||
| 17 | InputInterpreter::~InputInterpreter() = default; | 19 | InputInterpreter::~InputInterpreter() = default; |
| 18 | 20 | ||
| @@ -25,6 +27,17 @@ void InputInterpreter::PollInput() { | |||
| 25 | button_states[current_index] = button_state; | 27 | button_states[current_index] = button_state; |
| 26 | } | 28 | } |
| 27 | 29 | ||
| 30 | void InputInterpreter::ResetButtonStates() { | ||
| 31 | previous_index = 0; | ||
| 32 | current_index = 0; | ||
| 33 | |||
| 34 | button_states[0] = 0xFFFFFFFF; | ||
| 35 | |||
| 36 | for (std::size_t i = 1; i < button_states.size(); ++i) { | ||
| 37 | button_states[i] = 0; | ||
| 38 | } | ||
| 39 | } | ||
| 40 | |||
| 28 | bool InputInterpreter::IsButtonPressed(HIDButton button) const { | 41 | bool InputInterpreter::IsButtonPressed(HIDButton button) const { |
| 29 | return (button_states[current_index] & (1U << static_cast<u8>(button))) != 0; | 42 | return (button_states[current_index] & (1U << static_cast<u8>(button))) != 0; |
| 30 | } | 43 | } |