|
@@ -12,7 +12,9 @@ InputInterpreter::InputInterpreter(Core::System& system)
|
|
|
: npad{system.ServiceManager()
|
|
: npad{system.ServiceManager()
|
|
|
.GetService<Service::HID::Hid>("hid")
|
|
.GetService<Service::HID::Hid>("hid")
|
|
|
->GetAppletResource()
|
|
->GetAppletResource()
|
|
|
- ->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad)} {}
|
|
|
|
|
|
|
+ ->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad)} {
|
|
|
|
|
+ ResetButtonStates();
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
InputInterpreter::~InputInterpreter() = default;
|
|
InputInterpreter::~InputInterpreter() = default;
|
|
|
|
|
|
|
@@ -25,6 +27,17 @@ void InputInterpreter::PollInput() {
|
|
|
button_states[current_index] = button_state;
|
|
button_states[current_index] = button_state;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void InputInterpreter::ResetButtonStates() {
|
|
|
|
|
+ previous_index = 0;
|
|
|
|
|
+ current_index = 0;
|
|
|
|
|
+
|
|
|
|
|
+ button_states[0] = 0xFFFFFFFF;
|
|
|
|
|
+
|
|
|
|
|
+ for (std::size_t i = 1; i < button_states.size(); ++i) {
|
|
|
|
|
+ button_states[i] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
bool InputInterpreter::IsButtonPressed(HIDButton button) const {
|
|
bool InputInterpreter::IsButtonPressed(HIDButton button) const {
|
|
|
return (button_states[current_index] & (1U << static_cast<u8>(button))) != 0;
|
|
return (button_states[current_index] & (1U << static_cast<u8>(button))) != 0;
|
|
|
}
|
|
}
|