summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-01-16 22:00:54 +0100
committerGitHub <noreply@github.com>2021-01-16 22:00:54 +0100
commitff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8 (patch)
treebef1999d57e5106a379fc9ac19acb01d84913085
parentMerge pull request #5275 from FernandoS27/fast-native-clock (diff)
parentinput_interpreter: Add method to check for a button press state (diff)
downloadyuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar.gz
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar.bz2
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar.lz
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar.xz
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.tar.zst
yuzu-ff2b7cc0d3fbcc2980c027589002ff3ac9e0f3e8.zip
-rw-r--r--src/core/frontend/input_interpreter.cpp4
-rw-r--r--src/core/frontend/input_interpreter.h21
2 files changed, 25 insertions, 0 deletions
diff --git a/src/core/frontend/input_interpreter.cpp b/src/core/frontend/input_interpreter.cpp
index 66ae506cd..ec5fe660e 100644
--- a/src/core/frontend/input_interpreter.cpp
+++ b/src/core/frontend/input_interpreter.cpp
@@ -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;
diff --git a/src/core/frontend/input_interpreter.h b/src/core/frontend/input_interpreter.h
index fea9aebe6..36a92a6b6 100644
--- a/src/core/frontend/input_interpreter.h
+++ b/src/core/frontend/input_interpreter.h
@@ -67,6 +67,27 @@ public:
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.
*