diff --git a/src/InputHandler.cpp b/src/InputHandler.cpp index e6efeed..249ef91 100644 --- a/src/InputHandler.cpp +++ b/src/InputHandler.cpp @@ -10,7 +10,7 @@ InputHandler* InputHandler::GetSingleton() return &instance; } -void InputHandler::SetButton(std::uint32_t a_keyCode, std::string a_name) +void InputHandler::SetButton(std::uint32_t a_keyCode, std::string a_name) noexcept { buttonKeyCode = a_keyCode; buttonName = std::move(a_name); @@ -105,16 +105,15 @@ bool InputHandler::ProcessButton(const RE::ButtonEvent* btn) } if (btn->IsUp() && _pressTime) { - const auto held = std::chrono::duration( - std::chrono::steady_clock::now() - *_pressTime) - .count(); - _pressTime.reset(); - if (_mapTriggered) { _mapTriggered = false; } else { + const auto held = std::chrono::duration( + std::chrono::steady_clock::now() - *_pressTime) + .count(); DispatchShortPress(held); } + _pressTime.reset(); return true; } diff --git a/src/InputHandler.h b/src/InputHandler.h index e53f892..17dd7c4 100644 --- a/src/InputHandler.h +++ b/src/InputHandler.h @@ -8,9 +8,7 @@ class InputHandler : static InputHandler* GetSingleton(); InputHandler(const InputHandler&) = delete; - InputHandler(InputHandler&&) = delete; InputHandler& operator=(const InputHandler&) = delete; - InputHandler& operator=(InputHandler&&) = delete; RE::BSEventNotifyControl ProcessEvent( RE::InputEvent* const* a_events, @@ -26,7 +24,7 @@ class InputHandler : }; void SetHoldDuration(float a_duration) noexcept { holdDuration = a_duration; } - void SetButton(std::uint32_t a_keyCode, std::string a_name); + void SetButton(std::uint32_t a_keyCode, std::string a_name) noexcept; // Queries ControlMap for the user event bound to the configured button and caches it. // Call at kInputLoaded, kPostLoadGame, and kNewGame. diff --git a/src/Plugin.cpp b/src/Plugin.cpp index d2c717f..1a8eae9 100644 --- a/src/Plugin.cpp +++ b/src/Plugin.cpp @@ -38,7 +38,7 @@ struct ButtonDef std::string displayName; }; -std::pair ReadButton(const CSimpleIniA& a_ini) +ButtonDef ReadButton(const CSimpleIniA& a_ini) { using Key = RE::BSWin32GamepadDevice::Key; @@ -56,10 +56,10 @@ std::pair ReadButton(const CSimpleIniA& a_ini) const auto it = kButtonMap.find(lower); if (it == kButtonMap.end()) { logger::warn("sButton '{}' is not a recognised button (valid: Start, Back) — using Start", raw); - return { InputHandler::kDefaultButton, "Start" }; + return { .keyCode = InputHandler::kDefaultButton, .displayName = "Start" }; } - return { it->second.keyCode, it->second.displayName }; + return it->second; } void OnInputLoaded()