diff --git a/Dalamud/Game/ClientState/GamepadButtons.cs b/Dalamud/Game/ClientState/GamepadButtons.cs index e1db685e0..80a745d53 100644 --- a/Dalamud/Game/ClientState/GamepadButtons.cs +++ b/Dalamud/Game/ClientState/GamepadButtons.cs @@ -1,10 +1,18 @@ -namespace Dalamud.Game.ClientState +using System; + +namespace Dalamud.Game.ClientState { /// /// Bitmask of the Button ushort used by the game. /// + [Flags] public enum GamepadButtons : ushort { + /// + /// No buttons pressed. + /// + None = 0, + /// /// Digipad up. /// diff --git a/Dalamud/Game/ClientState/GamepadState.cs b/Dalamud/Game/ClientState/GamepadState.cs index 7e04a7a71..b9711d093 100644 --- a/Dalamud/Game/ClientState/GamepadState.cs +++ b/Dalamud/Game/ClientState/GamepadState.cs @@ -228,12 +228,13 @@ namespace Dalamud.Game.ClientState // `ButtonPressed` while ImGuiConfigFlags.NavEnableGamepad is set. // This is debatable. // ImGui itself does not care either way as it uses the Raw values and does its own state handling. - input->ButtonsRaw &= (ushort)~GamepadButtons.L2; - input->ButtonsRaw &= (ushort)~GamepadButtons.R2; - input->ButtonsRaw &= (ushort)~GamepadButtons.DpadDown; - input->ButtonsRaw &= (ushort)~GamepadButtons.DpadLeft; - input->ButtonsRaw &= (ushort)~GamepadButtons.DpadUp; - input->ButtonsRaw &= (ushort)~GamepadButtons.DpadRight; + const ushort deletionMask = (ushort)(~GamepadButtons.L2 + & ~GamepadButtons.R2 + & ~GamepadButtons.DpadDown + & ~GamepadButtons.DpadLeft + & ~GamepadButtons.DpadUp + & ~GamepadButtons.DpadRight); + input->ButtonsRaw &= deletionMask; input->ButtonsPressed = 0; input->ButtonsReleased = 0; input->ButtonsRepeat = 0;