diff --git a/src/SMAPI/Framework/Input/GamePadStateBuilder.cs b/src/SMAPI/Framework/Input/GamePadStateBuilder.cs index 2d2b485c..2c20c226 100644 --- a/src/SMAPI/Framework/Input/GamePadStateBuilder.cs +++ b/src/SMAPI/Framework/Input/GamePadStateBuilder.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; @@ -22,7 +21,7 @@ internal class GamePadStateBuilder : IInputStateBuilderThe current button states. - private readonly IDictionary? ButtonStates; + private readonly Dictionary ButtonStates; /// The left trigger value. private float LeftTrigger; @@ -41,7 +40,6 @@ internal class GamePadStateBuilder : IInputStateBuilderWhether the gamepad is currently connected. - [MemberNotNullWhen(true, nameof(GamePadStateBuilder.ButtonStates))] public bool IsConnected { get; } @@ -55,33 +53,38 @@ internal class GamePadStateBuilder : IInputStateBuilder + if (this.IsConnected) { - [SButton.DPadUp] = pad.Up, - [SButton.DPadDown] = pad.Down, - [SButton.DPadLeft] = pad.Left, - [SButton.DPadRight] = pad.Right, + GamePadDPad pad = state.DPad; + GamePadButtons buttons = state.Buttons; + GamePadTriggers triggers = state.Triggers; + GamePadThumbSticks sticks = state.ThumbSticks; + this.ButtonStates = new Dictionary + { + [SButton.DPadUp] = pad.Up, + [SButton.DPadDown] = pad.Down, + [SButton.DPadLeft] = pad.Left, + [SButton.DPadRight] = pad.Right, - [SButton.ControllerA] = buttons.A, - [SButton.ControllerB] = buttons.B, - [SButton.ControllerX] = buttons.X, - [SButton.ControllerY] = buttons.Y, - [SButton.LeftStick] = buttons.LeftStick, - [SButton.RightStick] = buttons.RightStick, - [SButton.LeftShoulder] = buttons.LeftShoulder, - [SButton.RightShoulder] = buttons.RightShoulder, - [SButton.ControllerBack] = buttons.Back, - [SButton.ControllerStart] = buttons.Start, - [SButton.BigButton] = buttons.BigButton - }; - this.LeftTrigger = triggers.Left; - this.RightTrigger = triggers.Right; - this.LeftStickPos = sticks.Left; - this.RightStickPos = sticks.Right; + [SButton.ControllerA] = buttons.A, + [SButton.ControllerB] = buttons.B, + [SButton.ControllerX] = buttons.X, + [SButton.ControllerY] = buttons.Y, + [SButton.LeftStick] = buttons.LeftStick, + [SButton.RightStick] = buttons.RightStick, + [SButton.LeftShoulder] = buttons.LeftShoulder, + [SButton.RightShoulder] = buttons.RightShoulder, + [SButton.ControllerBack] = buttons.Back, + [SButton.ControllerStart] = buttons.Start, + [SButton.BigButton] = buttons.BigButton + }; + this.LeftTrigger = triggers.Left; + this.RightTrigger = triggers.Right; + this.LeftStickPos = sticks.Left; + this.RightStickPos = sticks.Right; + } + else + this.ButtonStates = []; } /// @@ -132,10 +135,7 @@ internal class GamePadStateBuilder : IInputStateBuilder