169 lines
4.2 KiB
C#
169 lines
4.2 KiB
C#
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<Image>().color = _isActive ? ColorSelection : Color.clear;
|
|
var image = Selector.GetComponent<Image>();
|
|
var test = Selector.GetComponentInChildren<Image>();
|
|
}
|
|
}
|
|
|
|
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<Image>();
|
|
downButtonImage = DownButton.GetComponentInChildren<Image>();
|
|
if (Selector != null)
|
|
Selector.GetComponent<Image>().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;
|
|
}
|
|
|
|
|
|
}
|