using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.ComponentModel; using System.Collections.Generic; public class HighscoreLetterManager : BaseInputBehavior { private List Alphanumerics = new List { "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; UpdateButtons(); //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 { get { return !Player2 ? GameManager.Instance.YAxisP1 : GameManager.Instance.YAxisP2; } } 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; } } public bool Player2 { get; internal set; } // Use this for initialization void Start() { CurrentIndex = 0; if (Alphanumerics.Contains(LetterText.text)) CurrentIndex = Alphanumerics.IndexOf(LetterText.text); upButtonImage = UpButton.GetComponentInChildren(); downButtonImage = DownButton.GetComponentInChildren(); UpdateButtons(); } // 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; } ////////////////UpdateButtons(); } private void UpdateButtons() { //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; Debug.Log(transform.gameObject.name + " is " + (_isActive ? "active" : "inactive")); upButtonImage.gameObject.SetActive(_isActive); downButtonImage.gameObject.SetActive(_isActive); } 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.Count - 1; else if (CurrentIndex >= Alphanumerics.Count) 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; } }