Files
HauntedBloodlines/Assets/Scripts/UI/UIMenuControllerManager.cs
2025-05-29 22:31:40 +03:00

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;
}
}
}