forked from suyu/suyu
input_interpreter: Add method to check for a button press state
This allows to check for continuous input for the duration of a button press/hold
This commit is contained in:
parent
a7fd61fcce
commit
3c8f936b31
2 changed files with 25 additions and 0 deletions
|
@ -25,6 +25,10 @@ void InputInterpreter::PollInput() {
|
||||||
button_states[current_index] = button_state;
|
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 {
|
bool InputInterpreter::IsButtonPressedOnce(HIDButton button) const {
|
||||||
const bool current_press =
|
const bool current_press =
|
||||||
(button_states[current_index] & (1U << static_cast<u8>(button))) != 0;
|
(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.
|
/// Gets a button state from HID and inserts it into the array of button states.
|
||||||
void PollInput();
|
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
|
* The specified button is considered to be pressed once
|
||||||
* if it is currently pressed and not pressed previously.
|
* if it is currently pressed and not pressed previously.
|
||||||
|
|
Loading…
Reference in a new issue