221 lines
7.6 KiB
C#
221 lines
7.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class UIMenuControllerManager : MonoBehaviour
|
|
{
|
|
public int menuItemIndexVertical;
|
|
public int menuItemIndexVerticalMax;
|
|
|
|
public int menuItemIndexHorizontal;
|
|
public int menuItemIndexHorizontalMax;
|
|
|
|
[HideInInspector] public bool _verticalButtonDpadIsPressedDown;
|
|
[HideInInspector] public bool _horizontalButtonDpadUpIsPressedDown;
|
|
[HideInInspector] public bool upDpadVerticalButton;
|
|
[HideInInspector] public bool downDpadVericalButton;
|
|
|
|
private static UIMenuControllerManager _instance;
|
|
public static UIMenuControllerManager Getinstance() { return _instance; }
|
|
|
|
public void Awake()
|
|
{
|
|
if (!_instance)
|
|
{
|
|
_instance = this;
|
|
}
|
|
}
|
|
|
|
public void DpadNavigateVertical()
|
|
{
|
|
if (menuItemIndexVerticalMax != 0) //If Verical Max value is not zero:
|
|
{
|
|
if (Input.GetAxis("DpadVertical") > 0 && !_verticalButtonDpadIsPressedDown)
|
|
{
|
|
menuItemIndexVertical -= 1;
|
|
print("DpadVertical UP");
|
|
if (menuItemIndexVertical == -1)
|
|
{
|
|
menuItemIndexVertical = menuItemIndexVerticalMax - 1;
|
|
}
|
|
if (_verticalButtonDpadIsPressedDown == false)
|
|
{
|
|
_verticalButtonDpadIsPressedDown = true;
|
|
}
|
|
upDpadVerticalButton = true;
|
|
}
|
|
else if (Input.GetAxis("DpadVertical") < 0 && !_verticalButtonDpadIsPressedDown)
|
|
{
|
|
menuItemIndexVertical += 1;
|
|
print("DpadVertical DOWN");
|
|
if (menuItemIndexVertical == menuItemIndexVerticalMax)
|
|
{
|
|
menuItemIndexVertical = 0;
|
|
}
|
|
if (_verticalButtonDpadIsPressedDown == false)
|
|
{
|
|
_verticalButtonDpadIsPressedDown = true;
|
|
}
|
|
downDpadVericalButton = true;
|
|
}
|
|
else if (Input.GetAxis("DpadVertical") == 0)
|
|
{
|
|
_verticalButtonDpadIsPressedDown = false;
|
|
upDpadVerticalButton = false;
|
|
downDpadVericalButton = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void UpdateCurrentSelectedVerticalButton(List<Button> button)
|
|
{
|
|
EventSystem.current.SetSelectedGameObject(button[menuItemIndexVertical].gameObject);
|
|
}
|
|
|
|
|
|
public void DpadHorizontalSliderValuesUpdate(List<Slider> slider, List<float> speed)
|
|
{
|
|
if (slider[menuItemIndexVertical] != null)
|
|
{
|
|
if (slider[menuItemIndexVertical].direction == Slider.Direction.LeftToRight)
|
|
{
|
|
if (Input.GetAxis("DpadHorizontal") < 0)
|
|
{
|
|
slider[menuItemIndexVertical].value += speed[menuItemIndexVertical];
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") > 0)
|
|
{
|
|
slider[menuItemIndexVertical].value -= speed[menuItemIndexVertical];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (slider[menuItemIndexVertical] != null)
|
|
{
|
|
if (Input.GetAxis("DpadHorizontal") < 0)
|
|
{
|
|
slider[menuItemIndexVertical].value -= speed[menuItemIndexVertical];
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") > 0)
|
|
{
|
|
slider[menuItemIndexVertical].value += speed[menuItemIndexVertical];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void DpadHorizontalSliderInvertedValuesUpdate(List<Slider> slider, float speed)
|
|
{
|
|
if (slider[menuItemIndexVertical] != null)
|
|
{
|
|
if (Input.GetAxis("DpadHorizontal") < 0)
|
|
{
|
|
slider[menuItemIndexVertical].value -= speed;
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") > 0)
|
|
{
|
|
slider[menuItemIndexVertical].value += speed;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SelectedMenuItemUpdate_TeleportHighlight(ref List<RectTransform> selectedMenuItem, RectTransform selectedItemHighlight)
|
|
{
|
|
for (int i = 0; i < selectedMenuItem.Count; i++)
|
|
{
|
|
if (i == menuItemIndexVertical)
|
|
{
|
|
selectedItemHighlight.anchoredPosition = selectedMenuItem[i].anchoredPosition;
|
|
selectedItemHighlight.pivot = selectedMenuItem[i].pivot;
|
|
selectedItemHighlight.anchorMin = selectedMenuItem[i].anchorMin;
|
|
selectedItemHighlight.anchorMax = selectedMenuItem[i].anchorMax;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SelectedMenuItemUpdate(ref List<RectTransform> selectedMenuItem)
|
|
{
|
|
if(menuItemIndexVerticalMax != 0)
|
|
{
|
|
for (int i = 0; i < selectedMenuItem.Count; i++)
|
|
{
|
|
if (i == menuItemIndexVertical)
|
|
{
|
|
selectedMenuItem[i].gameObject.SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
selectedMenuItem[i].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
selectedMenuItem[menuItemIndexVertical].gameObject.SetActive(true);
|
|
}
|
|
}
|
|
|
|
public void SelectedMenuItemHideAll()
|
|
{
|
|
|
|
}
|
|
|
|
public void DpadNavigateHorizontalButtonPress(List<Button> buttonLeft, List<Button> buttonRight)
|
|
{
|
|
if (buttonLeft[menuItemIndexVertical] != null && buttonRight[menuItemIndexVertical] != null)
|
|
{
|
|
{
|
|
if (Input.GetAxis("DpadHorizontal") < 0 && !_horizontalButtonDpadUpIsPressedDown)
|
|
{
|
|
buttonRight[menuItemIndexVertical].onClick.Invoke();
|
|
print("dpadHorizontal right");
|
|
_horizontalButtonDpadUpIsPressedDown = true;
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") > 0 && !_horizontalButtonDpadUpIsPressedDown)
|
|
{
|
|
buttonLeft[menuItemIndexVertical].onClick.Invoke();
|
|
print("DpadHorizontal Left");
|
|
_horizontalButtonDpadUpIsPressedDown = true;
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") == 0)
|
|
{
|
|
_horizontalButtonDpadUpIsPressedDown = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void DpadNavigateHorizontalButtonsNavigation(List<Button> buttons)
|
|
{
|
|
if (Input.GetAxis("DpadHorizontal") < 0 && !_horizontalButtonDpadUpIsPressedDown)
|
|
{
|
|
menuItemIndexHorizontal += 1;
|
|
print("dpadHorizontal right");
|
|
if (menuItemIndexHorizontal >= menuItemIndexHorizontalMax)
|
|
{
|
|
menuItemIndexHorizontal = 0;
|
|
}
|
|
buttons[menuItemIndexHorizontal].onClick.Invoke();
|
|
_horizontalButtonDpadUpIsPressedDown = true;
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") > 0 && !_horizontalButtonDpadUpIsPressedDown)
|
|
{
|
|
menuItemIndexHorizontal -= 1;
|
|
print("dpadHorizontal Left");
|
|
if (menuItemIndexHorizontal == -1)
|
|
{
|
|
menuItemIndexHorizontal = menuItemIndexHorizontalMax -1;
|
|
}
|
|
buttons[menuItemIndexHorizontal].onClick.Invoke();
|
|
_horizontalButtonDpadUpIsPressedDown = true;
|
|
}
|
|
else if (Input.GetAxis("DpadHorizontal") == 0)
|
|
{
|
|
_horizontalButtonDpadUpIsPressedDown = false;
|
|
}
|
|
}
|
|
}
|