PageRenderTime 22ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

/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
  1. using System;
  2. using Delta.Engine;
  3. using Delta.InputSystem.Devices;
  4. using Delta.Rendering.Basics.Fonts;
  5. using Delta.Utilities;
  6. using Delta.Utilities.Datatypes;
  7. using NUnit.Framework;
  8. namespace Delta.InputSystem.Tests
  9. {
  10. /// <summary>
  11. /// Simple GamePad tests to make sure GamePads work and is optimized.
  12. /// </summary>
  13. internal class GamePadTests
  14. {
  15. #region CheckGamePadStatesAndPosition (Visual)
  16. /// <summary>
  17. /// Check GamePad states
  18. /// </summary>
  19. [Test, Category("Visual")]
  20. public static void CheckGamePadStatesAndPosition()
  21. {
  22. // We have to change the input module to Xna here because it's currently
  23. // the only input module (for Windows) which supports a GamePad
  24. // This test is indented to be tested with Xna Input.
  25. Assert.Equal(Settings.Modules.InputModule, "Xna");
  26. BaseGamePad pad = Input.GamePad;
  27. Font font = Font.Default;
  28. string newLine = Environment.NewLine;
  29. Application.Start(delegate
  30. {
  31. // Connection test
  32. font.Draw("GamePad IsConnected" + newLine + pad.IsConnected,
  33. Rectangle.FromCenter(new Point(0.5f, 0.2f), Size.Half));
  34. // Digital Pad
  35. font.Draw("Digital Pad",
  36. Rectangle.FromCenter(new Point(0.2f, 0.4f), Size.Half));
  37. font.Draw(
  38. "Up" + newLine + pad.GetState(InputButton.GamePadUp),
  39. Rectangle.FromCenter(new Point(0.2f, 0.45f), Size.Half));
  40. font.Draw(
  41. "Left" + newLine + pad.GetState(InputButton.GamePadLeft),
  42. Rectangle.FromCenter(new Point(0.15f, 0.5f), Size.Half));
  43. font.Draw(
  44. "Right" + newLine + pad.GetState(InputButton.GamePadRight),
  45. Rectangle.FromCenter(new Point(0.25f, 0.5f), Size.Half));
  46. font.Draw(
  47. "Down" + newLine + pad.GetState(InputButton.GamePadDown),
  48. Rectangle.FromCenter(new Point(0.2f, 0.55f), Size.Half));
  49. // Basic Buttons
  50. font.Draw("Buttons",
  51. Rectangle.FromCenter(new Point(0.8f, 0.4f), Size.Half));
  52. font.Draw(
  53. "Y" + newLine + pad.GetState(InputButton.GamePadY),
  54. Rectangle.FromCenter(new Point(0.8f, 0.45f), Size.Half));
  55. font.Draw(
  56. "X" + newLine + pad.GetState(InputButton.GamePadX),
  57. Rectangle.FromCenter(new Point(0.75f, 0.5f), Size.Half));
  58. font.Draw(
  59. "B" + newLine + pad.GetState(InputButton.GamePadB),
  60. Rectangle.FromCenter(new Point(0.85f, 0.5f), Size.Half));
  61. font.Draw(
  62. "A" + newLine + pad.GetState(InputButton.GamePadA),
  63. Rectangle.FromCenter(new Point(0.8f, 0.55f), Size.Half));
  64. // Shoulder buttons
  65. font.Draw(
  66. "Left Trigger" + newLine +
  67. pad.GetState(InputButton.GamePadLeftTrigger),
  68. Rectangle.FromCenter(new Point(0.3f, 0.275f), Size.Half));
  69. font.Draw(
  70. "Left Shoulder" + newLine +
  71. pad.GetState(InputButton.GamePadLeftShoulder),
  72. Rectangle.FromCenter(new Point(0.3f, 0.325f), Size.Half));
  73. font.Draw(
  74. "Right Trigger" + newLine +
  75. pad.GetState(InputButton.GamePadRightTrigger),
  76. Rectangle.FromCenter(new Point(0.7f, 0.275f), Size.Half));
  77. font.Draw(
  78. "Right Shoulder" + newLine +
  79. pad.GetState(InputButton.GamePadRightShoulder),
  80. Rectangle.FromCenter(new Point(0.7f, 0.325f), Size.Half));
  81. // Player buttons
  82. font.Draw(
  83. "Back/Select" + newLine + pad.GetState(InputButton.GamePadBack),
  84. Rectangle.FromCenter(new Point(0.4f, 0.425f), Size.Half));
  85. //font.DrawCentered("Home" + newLine +
  86. // pad.GetState(InputButton.GamePadHome),
  87. // Rectangle.FromCenter(new Point(0.35f, 0.5f), Size.Half));
  88. font.Draw(
  89. "Start" + newLine + pad.GetState(InputButton.GamePadStart),
  90. Rectangle.FromCenter(new Point(0.6f, 0.425f), Size.Half));
  91. // Thumb sticks
  92. font.Draw(
  93. "Left stick" + newLine + pad.LeftThumbStick + newLine +
  94. pad.GetState(InputButton.GamePadLeftStick),
  95. Rectangle.FromCenter(new Point(0.4f, 0.6f), Size.Half));
  96. font.Draw(
  97. "Right stick" + newLine + pad.RightThumbStick + newLine +
  98. pad.GetState(InputButton.GamePadRightStick),
  99. Rectangle.FromCenter(new Point(0.6f, 0.6f), Size.Half));
  100. });
  101. // After the test switch to the original set input module again
  102. }
  103. #endregion
  104. #region CheckMultipleGamePads (Visual)
  105. /// <summary>
  106. /// Test multiple GamePads connected (up to 4)!
  107. /// </summary>
  108. [Test, Category("Visual")]
  109. public static void CheckMultipleGamePads()
  110. {
  111. Application.Start(delegate
  112. {
  113. Font.Default.Draw(
  114. "GamePad 1 IsConnected=" + Input.GamePads(0).IsConnected,
  115. Rectangle.FromCenter(new Point(0.5f, 0.4f), Size.Half));
  116. Font.Default.Draw(
  117. "GamePad 1 A Button=" +
  118. Input.GamePads(0).GetState(InputButton.GamePadA),
  119. Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
  120. Font.Default.Draw(
  121. "GamePad 2 IsConnected=" + Input.GamePads(1).IsConnected,
  122. Rectangle.FromCenter(new Point(0.5f, 0.5f), Size.Half));
  123. Font.Default.Draw(
  124. "GamePad 2 A Button=" +
  125. Input.GamePads(1).GetState(InputButton.GamePadA),
  126. Rectangle.FromCenter(new Point(0.5f, 0.55f), Size.Half));
  127. Font.Default.Draw(
  128. "GamePad 3 IsConnected=" + Input.GamePads(2).IsConnected,
  129. Rectangle.FromCenter(new Point(0.5f, 0.6f), Size.Half));
  130. Font.Default.Draw(
  131. "GamePad 3 A Button=" +
  132. Input.GamePads(2).GetState(InputButton.GamePadA),
  133. Rectangle.FromCenter(new Point(0.5f, 0.65f), Size.Half));
  134. });
  135. }
  136. #endregion
  137. #region CheckRummble (Visual)
  138. /// <summary>
  139. /// Check if the device rumbles and stops rumbling if certain keys are
  140. /// pressed
  141. /// </summary>
  142. [Test, Category("Visual")]
  143. public static void CheckRummble()
  144. {
  145. Application.Start(delegate
  146. {
  147. if (Input.GamePad.IsConnected)
  148. {
  149. Font.Default.Draw(
  150. "Press 'A' to Rumble and release and 'B' to stop rumbling",
  151. Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
  152. if (Input.GamePad.IsPressed(InputButton.GamePadA))
  153. {
  154. Input.GamePad.Rumble(5.0f, 5.0f);
  155. }
  156. if (Input.GamePad.IsPressed(InputButton.GamePadB))
  157. {
  158. Input.GamePad.Rumble(false);
  159. }
  160. }
  161. else
  162. {
  163. Font.Default.Draw("Pad is not connected!",
  164. Rectangle.FromCenter(new Point(0.5f, 0.45f), Size.Half));
  165. }
  166. });
  167. }
  168. #endregion
  169. }
  170. }