Input.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using System;
  2. using System.Collections;
  3. using FBInput;
  4. namespace Core
  5. {
  6. public static class Input
  7. {
  8. public static bool JoystickIsOpen = true;
  9. public static readonly InputButtonProcessor AnyKey = new InputButtonProcessor();
  10. public static class Game
  11. {
  12. public static readonly InputButtonProcessor MoveDown = new InputButtonProcessor();
  13. public static readonly InputButtonProcessor MoveUp = new InputButtonProcessor();
  14. public static readonly InputButtonProcessor MoveLeft = new InputButtonProcessor();
  15. public static readonly InputButtonProcessor MoveRight = new InputButtonProcessor();
  16. public static readonly InputButtonProcessor Atk = new InputButtonProcessor();
  17. public static readonly InputButtonProcessor CirtAtk = new InputButtonProcessor();
  18. public static readonly InputButtonProcessor Jump = new InputButtonProcessor();
  19. public static readonly InputButtonProcessor UpRising = new InputButtonProcessor();
  20. public static readonly InputButtonProcessor HitGround = new InputButtonProcessor();
  21. public static readonly InputButtonProcessor Charging = new InputButtonProcessor();
  22. public static readonly InputButtonProcessor Execute = new InputButtonProcessor();
  23. public static readonly InputButtonProcessor Defence = new InputButtonProcessor();
  24. public static readonly InputButtonProcessor JumpDown = new InputButtonProcessor();
  25. public static readonly InputButtonProcessor Chase = new InputButtonProcessor();
  26. public static readonly InputButtonProcessor FlashAttack = new InputButtonProcessor();
  27. public static readonly InputButtonProcessor BladeStorm = new InputButtonProcessor();
  28. [Obsolete]
  29. public static readonly InputButtonProcessor ShadeAtk = new InputButtonProcessor();
  30. public static readonly InputButtonProcessor Search = new InputButtonProcessor();
  31. public static readonly InputButtonProcessor L2 = new InputButtonProcessor();
  32. public static readonly InputButtonProcessor R2 = new InputButtonProcessor();
  33. public static class Flash
  34. {
  35. public static readonly InputButtonProcessor Left = new InputButtonProcessor();
  36. public static readonly InputButtonProcessor Right = new InputButtonProcessor();
  37. public static readonly InputButtonProcessor Up = new InputButtonProcessor();
  38. public static readonly InputButtonProcessor Down = new InputButtonProcessor();
  39. public static readonly InputButtonProcessor RightUp = new InputButtonProcessor();
  40. public static readonly InputButtonProcessor LeftUp = new InputButtonProcessor();
  41. public static readonly InputButtonProcessor RightDown = new InputButtonProcessor();
  42. public static readonly InputButtonProcessor LeftDown = new InputButtonProcessor();
  43. public static readonly InputButtonProcessor FaceDirection = new InputButtonProcessor();
  44. }
  45. }
  46. public static class UI
  47. {
  48. public static readonly InputButtonProcessor Down = new InputButtonProcessor();
  49. public static readonly InputButtonProcessor Up = new InputButtonProcessor();
  50. public static readonly InputButtonProcessor Left = new InputButtonProcessor();
  51. public static readonly InputButtonProcessor Right = new InputButtonProcessor();
  52. public static readonly InputButtonProcessor Confirm = new InputButtonProcessor();
  53. public static readonly InputButtonProcessor Cancel = new InputButtonProcessor();
  54. public static readonly InputButtonProcessor Pause = new InputButtonProcessor();
  55. public static readonly InputButtonProcessor Debug = new InputButtonProcessor();
  56. }
  57. public static class Story
  58. {
  59. public static readonly InputButtonProcessor Skip = new InputButtonProcessor();
  60. public static readonly InputButtonProcessor BackGame = new InputButtonProcessor();
  61. }
  62. public static class Shi
  63. {
  64. public static readonly InputButtonProcessor Down = new InputButtonProcessor();
  65. public static readonly InputButtonProcessor Up = new InputButtonProcessor();
  66. public static readonly InputButtonProcessor Left = new InputButtonProcessor();
  67. public static readonly InputButtonProcessor Right = new InputButtonProcessor();
  68. public static readonly InputButtonProcessor Jump = new InputButtonProcessor();
  69. public static readonly InputButtonProcessor Pause = new InputButtonProcessor();
  70. }
  71. public static class Vibration
  72. {
  73. private static float[][] VibrationData
  74. {
  75. get
  76. {
  77. return SingletonMono<EnemyDataPreload>.Instance.VibrationData;
  78. }
  79. }
  80. public static void Vibrate(int id)
  81. {
  82. if (!R.Settings.IsVibrate)
  83. {
  84. return;
  85. }
  86. id--;
  87. if (Input.Vibration._isPlaying)
  88. {
  89. R.Coroutine.Stop(Input.Vibration.PlayCoroutine(id));
  90. Input.Vibration.SetVibration(0f, 0f);
  91. Input.Vibration._isPlaying = false;
  92. }
  93. R.Coroutine.Start(Input.Vibration.PlayCoroutine(id));
  94. }
  95. public static void Stop()
  96. {
  97. if (!R.Settings.IsVibrate)
  98. {
  99. return;
  100. }
  101. R.Coroutine.Stop("PlayCoroutine");
  102. Input.Vibration.SetVibration(0f, 0f);
  103. Input.Vibration._isPlaying = false;
  104. }
  105. private static IEnumerator PlayCoroutine(int id)
  106. {
  107. Input.Vibration._isPlaying = true;
  108. float[] leftMoterRecords = Input.Vibration.VibrationData[id * 2];
  109. float[] rightMoterRecord = Input.Vibration.VibrationData[id * 2 + 1];
  110. for (int i = 0; i < leftMoterRecords.Length; i++)
  111. {
  112. if (!Input.Vibration._isPlaying)
  113. {
  114. Input.Vibration.SetVibration(0f, 0f);
  115. yield break;
  116. }
  117. float l2Axis = leftMoterRecords[i];
  118. float r2Axis = rightMoterRecord[i];
  119. Input.Vibration.SetVibration(l2Axis, r2Axis);
  120. yield return null;
  121. for (int j = 0; j < Input.Vibration._period - 1; j++)
  122. {
  123. yield return null;
  124. }
  125. }
  126. Input.Vibration.SetVibration(0f, 0f);
  127. yield break;
  128. }
  129. private static void SetVibration(float leftMotorValue, float rightMotorValue)
  130. {
  131. InputDriver.Vibration.SetVibration(leftMotorValue, rightMotorValue);
  132. }
  133. private static bool _isPlaying;
  134. private static int _period = 3;
  135. }
  136. }
  137. }