using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.ComponentModel; public class HighscoreLetterManager : MonoBehaviour { private string[] Alphanumerics = new[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; public bool IsActive { get { return _isActive; } set { if (value == _isActive) return; _isActive = value; Selector.GetComponent().color = _isActive ? ColorSelection : Color.clear; var image = Selector.GetComponent(); var test = Selector.GetComponentInChildren(); } } private int currentIndex; public Button UpButton; public Sprite UpButtonSprite; public Sprite PressedUpButtonSprite; public Button DownButton; public Sprite DownButtonSprite; public Sprite PressedDownButtonSprite; public Text LetterText; public GameObject Selector; public Color ColorSelection; //public string XAxis; public string YAxis; private Image upButtonImage; private Image downButtonImage; private bool letterIsChanging; private bool upButtonPressed; private bool downButtonPressed; private DateTime lastInput; public int InputDelay = 500; private bool _isActive; bool IsSpawned { get { return lastInput == null || (DateTime.Now - lastInput).Milliseconds < InputDelay; } } public string CurrentText { get { return Alphanumerics[CurrentIndex]; } } private int CurrentIndex { get { return currentIndex; } set { currentIndex = value; } } // Use this for initialization void Start() { CurrentIndex = 0; upButtonImage = UpButton.GetComponentInChildren(); downButtonImage = DownButton.GetComponentInChildren(); if (Selector != null) Selector.GetComponent().color = _isActive ? ColorSelection : Color.clear; } // Update is called once per frame void Update() { if (!IsActive) return; UpdateLetter(); if (!IsSpawned) { if (!string.IsNullOrEmpty(YAxis)) { var verticalAxis = Input.GetAxis(YAxis); if (Math.Abs(verticalAxis) == 1) ChangeLetter(verticalAxis == 1); } } } private void UpdateLetter() { if (letterIsChanging) return; if (LetterText.text != CurrentText) { LetterText.text = CurrentText; } UpdateButtonsSprite(); } private void UpdateButtonsSprite() { var upSprite = UpButtonSprite; var downSprite = DownButtonSprite; if (upButtonPressed && (DateTime.Now - lastInput).Milliseconds < 200) { upSprite = PressedUpButtonSprite; } else upButtonPressed = false; if (downButtonPressed && (DateTime.Now - lastInput).Milliseconds < 200) { downSprite = PressedDownButtonSprite; } else downButtonPressed = false; upButtonImage.sprite = upSprite; downButtonImage.sprite = downSprite; } public void ChangeLetter(bool plus) { if (letterIsChanging) return; lastInput = DateTime.Now; letterIsChanging = true; upButtonPressed = false; downButtonPressed = false; if (plus) { CurrentIndex++; upButtonPressed = true; } else { CurrentIndex--; downButtonPressed = true; } if (CurrentIndex < 0) CurrentIndex = Alphanumerics.Length - 1; else if (CurrentIndex >= Alphanumerics.Length) CurrentIndex = 0; letterIsChanging = false; } private static bool? IsPositiveMove(float axis) { bool? move = null; if (axis == 1) move = true; else if (axis == -1) move = false; return move; } }