private static GamepadButtonMemory GetButton(int index) { if (_ButtonData[index] == null) { _ButtonData[index] = new GamepadButtonMemory(); } return(_ButtonData[index]); }
public static void Update() { // Reset all states _AllButtonData.Reset(); _AllDpadData.Reset(); for (int i = 0; i < 4; i++) { if (GamePad.GetState((PlayerIndex)i).IsConnected) { if (_ButtonData[i] == null) { _ButtonData[i] = new GamepadButtonMemory(); } if (_DpadData[i] == null) { _DpadData[i] = new GamepadDpadMemory(); } // Copy current states into previous ones if (_IsSetup) { System.Array.Copy(_ButtonData[i].States, _ButtonData[i].Previous_States, 11); System.Array.Copy(_DpadData[i].States, _DpadData[i].Previous_States, 4); } else { _IsSetup = true; } // Update all states of controller _ButtonData[i].States[0] = GamePad.GetState((PlayerIndex)i).Buttons.Start; _ButtonData[i].States[1] = GamePad.GetState((PlayerIndex)i).Buttons.Back; _ButtonData[i].States[2] = GamePad.GetState((PlayerIndex)i).Buttons.LeftStick; _ButtonData[i].States[3] = GamePad.GetState((PlayerIndex)i).Buttons.RightStick; _ButtonData[i].States[4] = GamePad.GetState((PlayerIndex)i).Buttons.LeftShoulder; _ButtonData[i].States[5] = GamePad.GetState((PlayerIndex)i).Buttons.RightShoulder; _ButtonData[i].States[6] = GamePad.GetState((PlayerIndex)i).Buttons.Guide; _ButtonData[i].States[7] = GamePad.GetState((PlayerIndex)i).Buttons.A; _ButtonData[i].States[8] = GamePad.GetState((PlayerIndex)i).Buttons.B; _ButtonData[i].States[9] = GamePad.GetState((PlayerIndex)i).Buttons.X; _ButtonData[i].States[10] = GamePad.GetState((PlayerIndex)i).Buttons.Y; for (int j = 0; j < 11; j++) { if (_ButtonData[i].States[j] == ButtonState.Pressed) { _AllButtonData.States[j] = ButtonState.Pressed; } if (_ButtonData[i].Previous_States[j] == ButtonState.Pressed) { _AllButtonData.Previous_States[j] = ButtonState.Pressed; } } _DpadData[i].States[0] = GamePad.GetState((PlayerIndex)i).DPad.Up; _DpadData[i].States[1] = GamePad.GetState((PlayerIndex)i).DPad.Down; _DpadData[i].States[2] = GamePad.GetState((PlayerIndex)i).DPad.Left; _DpadData[i].States[3] = GamePad.GetState((PlayerIndex)i).DPad.Right; for (int j = 0; j < 4; j++) { if (_DpadData[i].States[j] == ButtonState.Pressed) { _AllDpadData.States[j] = ButtonState.Pressed; } if (_DpadData[i].Previous_States[j] == ButtonState.Pressed) { _AllDpadData.Previous_States[j] = ButtonState.Pressed; } } } } }