/InputSystem/Tests/GamePadTests.cs
C# | 181 lines | 144 code | 11 blank | 26 comment | 3 complexity | bf6dc3fbe473d68835633dbdd5c64098 MD5 | raw file
Possible License(s): Apache-2.0
- using System;
- using Delta.Engine;
- using Delta.InputSystem.Devices;
- using Delta.Rendering.Basics.Fonts;
- using Delta.Utilities;
- using Delta.Utilities.Datatypes;
- using NUnit.Framework;
-
- namespace Delta.InputSystem.Tests
- {
- /// <summary>
- /// Simple GamePad tests to make sure GamePads work and is optimized.
- /// </summary>
- internal class GamePadTests
- {
- #region CheckGamePadStatesAndPosition (Visual)
- /// <summary>
- /// Check GamePad states
- /// </summary>
- [Test, Category("Visual")]
- public static void CheckGamePadStatesAndPosition()
- {
- // We have to change the input module to Xna here because it's currently
- // the only input module (for Windows) which supports a GamePad
-
- // This test is indented to be tested with Xna Input.
- Assert.Equal(Settings.Modules.InputModule, "Xna");
- BaseGamePad pad = Input.GamePad;
-
- Font font = Font.Default;
- string newLine = Environment.NewLine;
- Application.Start(delegate
- {
- // Connection test
- font.Draw("GamePad IsConnected" + newLine + pad.IsConnected,
- Rectangle.FromCenter(new Point(0.5f, 0.2f), Size.Half));
-
- // Digital Pad
- font.Draw("Digital Pad",
- Rectangle.FromCenter(new Point(0.2f, 0.4f), Size.Half));
- font.Draw(
- "Up" + newLine + pad.GetState(InputButton.GamePadUp),
- Rectangle.FromCenter(new Point(0.2f, 0.45f), Size.Half));
- font.Draw(
- "Left" + newLine + pad.GetState(InputButton.GamePadLeft),
- Rectangle.FromCenter(new Point(0.15f, 0.5f), Size.Half));
- font.Draw(
- "Right" + newLine + pad.GetState(InputButton.GamePadRight),
- Rectangle.FromCenter(new Point(0.25f, 0.5f), Size.Half));
- font.Draw(
- "Down" + newLine + pad.GetState(InputButton.GamePadDown),
- Rectangle.FromCenter(new Point(0.2f, 0.55f), Size.Half));
-
- // Basic Buttons
- font.Draw("Buttons",
- Rectangle.FromCenter(new Point(0.8f, 0.4f), Size.Half));
- font.Draw(
- "Y" + newLine + pad.GetState(InputButton.GamePadY),
- Rectangle.FromCenter(new Point(0.8f, 0.45f), Size.Half));
- font.Draw(
- "X" + newLine + pad.GetState(InputButton.GamePadX),
- Rectangle.FromCenter(new Point(0.75f, 0.5f), Size.Half));
- font.Draw(
- "B" + newLine + pad.GetState(InputButton.GamePadB),
- Rectangle.FromCenter(new Point(0.85f, 0.5f), Size.Half));
- font.Draw(
- "A" + newLine + pad.GetState(InputButton.GamePadA),
- Rectangle.FromCenter(new Point(0.8f, 0.55f), Size.Half));
-
- // Shoulder buttons
- font.Draw(
- "Left Trigger" + newLine +
- pad.GetState(InputButton.GamePadLeftTrigger),
- Rectangle.FromCenter(new Point(0.3f, 0.275f), Size.Half));
- font.Draw(
- "Left Shoulder" + newLine +
- pad.GetState(InputButton.GamePadLeftShoulder),
- Rectangle.FromCenter(new Point(0.3f, 0.325f), Size.Half));
- font.Draw(
- "Right Trigger" + newLine +
- pad.GetState(InputButton.GamePadRightTrigger),
- Rectangle.FromCenter(new Point(0.7f, 0.275f), Size.Half));
- font.Draw(
- "Right Shoulder" + newLine +
- pad.GetState(InputButton.GamePadRightShoulder),
- Rectangle.FromCenter(new Point(0.7f, 0.325f), Size.Half));
-
- // Player buttons
- font.Draw(
- "Back/Select" + newLine + pad.GetState(InputButton.GamePadBack),
- Rectangle.FromCenter(new Point(0.4f, 0.425f), Size.Half));
- //font.DrawCentered("Home" + newLine +
- // pad.GetState(InputButton.GamePadHome),
- // Rectangle.FromCenter(new Point(0.35f, 0.5f), Size.Half));
- font.Draw(
- "Start" + newLine + pad.GetState(InputButton.GamePadStart),
- Rectangle.FromCenter(new Point(0.6f, 0.425f), Size.Half));
-
- // Thumb sticks
- font.Draw(
- "Left stick" + newLine + pad.LeftThumbStick + newLine +
- pad.GetState(InputButton.GamePadLeftStick),
- Rectangle.FromCenter(new Point(0.4f, 0.6f), Size.Half));
- font.Draw(
- "Right stick" + newLine + pad.RightThumbStick + newLine +
- pad.GetState(InputButton.GamePadRightStick),
- Rectangle.FromCenter(new Point(0.6f, 0.6f), Size.Half));
- });
-
- // After the test switch to the original set input module again
- }
- #endregion
-
- #region CheckMultipleGamePads (Visual)
- /// <summary>
- /// Test multiple GamePads connected (up to 4)!
- /// </summary>
- [Test, Category("Visual")]
- public static void CheckMultipleGamePads()
- {
- Application.Start(delegate
- {
- Font.Default.Draw(
- "GamePad 1 IsConnected=" + Input.GamePads(0).IsConnected,
- Rectangle.FromCenter(new Point(0.5f, 0.4f), Size.Half));
- Font.Default.Draw(
- "GamePad 1 A Button=" +
- Input.GamePads(0).GetState(InputButton.GamePadA),
- Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
- Font.Default.Draw(
- "GamePad 2 IsConnected=" + Input.GamePads(1).IsConnected,
- Rectangle.FromCenter(new Point(0.5f, 0.5f), Size.Half));
- Font.Default.Draw(
- "GamePad 2 A Button=" +
- Input.GamePads(1).GetState(InputButton.GamePadA),
- Rectangle.FromCenter(new Point(0.5f, 0.55f), Size.Half));
- Font.Default.Draw(
- "GamePad 3 IsConnected=" + Input.GamePads(2).IsConnected,
- Rectangle.FromCenter(new Point(0.5f, 0.6f), Size.Half));
- Font.Default.Draw(
- "GamePad 3 A Button=" +
- Input.GamePads(2).GetState(InputButton.GamePadA),
- Rectangle.FromCenter(new Point(0.5f, 0.65f), Size.Half));
- });
- }
- #endregion
-
- #region CheckRummble (Visual)
- /// <summary>
- /// Check if the device rumbles and stops rumbling if certain keys are
- /// pressed
- /// </summary>
- [Test, Category("Visual")]
- public static void CheckRummble()
- {
- Application.Start(delegate
- {
- if (Input.GamePad.IsConnected)
- {
- Font.Default.Draw(
- "Press 'A' to Rumble and release and 'B' to stop rumbling",
- Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
- if (Input.GamePad.IsPressed(InputButton.GamePadA))
- {
- Input.GamePad.Rumble(5.0f, 5.0f);
- }
- if (Input.GamePad.IsPressed(InputButton.GamePadB))
- {
- Input.GamePad.Rumble(false);
- }
- }
- else
- {
- Font.Default.Draw("Pad is not connected!",
- Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
- }
- });
- }
- #endregion
- }
- }