using System; using System.Collections; using FBInput; namespace Core { public static class Input { public static bool JoystickIsOpen = true; public static readonly InputButtonProcessor AnyKey = new InputButtonProcessor(); public static class Game { public static readonly InputButtonProcessor MoveDown = new InputButtonProcessor(); public static readonly InputButtonProcessor MoveUp = new InputButtonProcessor(); public static readonly InputButtonProcessor MoveLeft = new InputButtonProcessor(); public static readonly InputButtonProcessor MoveRight = new InputButtonProcessor(); public static readonly InputButtonProcessor Atk = new InputButtonProcessor(); public static readonly InputButtonProcessor CirtAtk = new InputButtonProcessor(); public static readonly InputButtonProcessor Jump = new InputButtonProcessor(); public static readonly InputButtonProcessor UpRising = new InputButtonProcessor(); public static readonly InputButtonProcessor HitGround = new InputButtonProcessor(); public static readonly InputButtonProcessor Charging = new InputButtonProcessor(); public static readonly InputButtonProcessor Execute = new InputButtonProcessor(); public static readonly InputButtonProcessor Defence = new InputButtonProcessor(); public static readonly InputButtonProcessor JumpDown = new InputButtonProcessor(); public static readonly InputButtonProcessor Chase = new InputButtonProcessor(); public static readonly InputButtonProcessor FlashAttack = new InputButtonProcessor(); public static readonly InputButtonProcessor BladeStorm = new InputButtonProcessor(); [Obsolete] public static readonly InputButtonProcessor ShadeAtk = new InputButtonProcessor(); public static readonly InputButtonProcessor Search = new InputButtonProcessor(); public static readonly InputButtonProcessor L2 = new InputButtonProcessor(); public static readonly InputButtonProcessor R2 = new InputButtonProcessor(); public static class Flash { public static readonly InputButtonProcessor Left = new InputButtonProcessor(); public static readonly InputButtonProcessor Right = new InputButtonProcessor(); public static readonly InputButtonProcessor Up = new InputButtonProcessor(); public static readonly InputButtonProcessor Down = new InputButtonProcessor(); public static readonly InputButtonProcessor RightUp = new InputButtonProcessor(); public static readonly InputButtonProcessor LeftUp = new InputButtonProcessor(); public static readonly InputButtonProcessor RightDown = new InputButtonProcessor(); public static readonly InputButtonProcessor LeftDown = new InputButtonProcessor(); public static readonly InputButtonProcessor FaceDirection = new InputButtonProcessor(); } } public static class UI { public static readonly InputButtonProcessor Down = new InputButtonProcessor(); public static readonly InputButtonProcessor Up = new InputButtonProcessor(); public static readonly InputButtonProcessor Left = new InputButtonProcessor(); public static readonly InputButtonProcessor Right = new InputButtonProcessor(); public static readonly InputButtonProcessor Confirm = new InputButtonProcessor(); public static readonly InputButtonProcessor Cancel = new InputButtonProcessor(); public static readonly InputButtonProcessor Pause = new InputButtonProcessor(); public static readonly InputButtonProcessor Debug = new InputButtonProcessor(); } public static class Story { public static readonly InputButtonProcessor Skip = new InputButtonProcessor(); public static readonly InputButtonProcessor BackGame = new InputButtonProcessor(); } public static class Shi { public static readonly InputButtonProcessor Down = new InputButtonProcessor(); public static readonly InputButtonProcessor Up = new InputButtonProcessor(); public static readonly InputButtonProcessor Left = new InputButtonProcessor(); public static readonly InputButtonProcessor Right = new InputButtonProcessor(); public static readonly InputButtonProcessor Jump = new InputButtonProcessor(); public static readonly InputButtonProcessor Pause = new InputButtonProcessor(); } public static class Vibration { private static float[][] VibrationData { get { return SingletonMono.Instance.VibrationData; } } public static void Vibrate(int id) { if (!R.Settings.IsVibrate) { return; } id--; if (Input.Vibration._isPlaying) { R.Coroutine.Stop(Input.Vibration.PlayCoroutine(id)); Input.Vibration.SetVibration(0f, 0f); Input.Vibration._isPlaying = false; } R.Coroutine.Start(Input.Vibration.PlayCoroutine(id)); } public static void Stop() { if (!R.Settings.IsVibrate) { return; } R.Coroutine.Stop("PlayCoroutine"); Input.Vibration.SetVibration(0f, 0f); Input.Vibration._isPlaying = false; } private static IEnumerator PlayCoroutine(int id) { Input.Vibration._isPlaying = true; float[] leftMoterRecords = Input.Vibration.VibrationData[id * 2]; float[] rightMoterRecord = Input.Vibration.VibrationData[id * 2 + 1]; for (int i = 0; i < leftMoterRecords.Length; i++) { if (!Input.Vibration._isPlaying) { Input.Vibration.SetVibration(0f, 0f); yield break; } float l2Axis = leftMoterRecords[i]; float r2Axis = rightMoterRecord[i]; Input.Vibration.SetVibration(l2Axis, r2Axis); yield return null; for (int j = 0; j < Input.Vibration._period - 1; j++) { yield return null; } } Input.Vibration.SetVibration(0f, 0f); yield break; } private static void SetVibration(float leftMotorValue, float rightMotorValue) { InputDriver.Vibration.SetVibration(leftMotorValue, rightMotorValue); } private static bool _isPlaying; private static int _period = 3; } } }