Browse Source
Merge pull request #5366 from Morph1984/button-press
input_interpreter: Add method to check for a button press state
pull/15/merge
bunnei
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
25 additions and
0 deletions
-
src/core/frontend/input_interpreter.cpp
-
src/core/frontend/input_interpreter.h
|
|
|
@ -25,6 +25,10 @@ void InputInterpreter::PollInput() { |
|
|
|
button_states[current_index] = button_state; |
|
|
|
} |
|
|
|
|
|
|
|
bool InputInterpreter::IsButtonPressed(HIDButton button) const { |
|
|
|
return (button_states[current_index] & (1U << static_cast<u8>(button))) != 0; |
|
|
|
} |
|
|
|
|
|
|
|
bool InputInterpreter::IsButtonPressedOnce(HIDButton button) const { |
|
|
|
const bool current_press = |
|
|
|
(button_states[current_index] & (1U << static_cast<u8>(button))) != 0; |
|
|
|
|
|
|
|
@ -66,6 +66,27 @@ public: |
|
|
|
/// Gets a button state from HID and inserts it into the array of button states. |
|
|
|
void PollInput(); |
|
|
|
|
|
|
|
/** |
|
|
|
* Checks whether the button is pressed. |
|
|
|
* |
|
|
|
* @param button The button to check. |
|
|
|
* |
|
|
|
* @returns True when the button is pressed. |
|
|
|
*/ |
|
|
|
[[nodiscard]] bool IsButtonPressed(HIDButton button) const; |
|
|
|
|
|
|
|
/** |
|
|
|
* Checks whether any of the buttons in the parameter list is pressed. |
|
|
|
* |
|
|
|
* @tparam HIDButton The buttons to check. |
|
|
|
* |
|
|
|
* @returns True when at least one of the buttons is pressed. |
|
|
|
*/ |
|
|
|
template <HIDButton... T> |
|
|
|
[[nodiscard]] bool IsAnyButtonPressed() { |
|
|
|
return (IsButtonPressed(T) || ...); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* The specified button is considered to be pressed once |
|
|
|
* if it is currently pressed and not pressed previously. |
|
|
|
|