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

285 lines
9.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UIExtensionLis;
using System.Linq;
public class UIMenuControllerNavigationPanel : MonoBehaviour
{
public Sprite selectedItemHighlightImage;
public List<RectTransform> selectedItem;
public int menuItemsMax;
public bool updateMaxItems = true;
[Header("Sliders")]
public List<Slider> slider;
public List<float> sliderSpeed;
[Header("ON & OFF Buttons")]
public List<Button> LeftButtons_OR_Else_ONButtons;
public List<Button> RightButtons_OR_Else_OFFButtons;
[Header("Vertical Buttons")]
[Tooltip("It's not necessary to add this if you don't have vertical buttons navigation")]
public List<Button> buttonsVertical;
[Header("Extensions")]
[SerializeField] private UIMenuControllerNavigationScrollbarExtension[] _UIMenuControllerNavigationScrollbarExtension;
public bool[] lockItems;
[HideInInspector] public bool[] lockItemsStartValues;
public int[] itemLockStart;
public int[] itemLockEnd;
public int itemlockStartFirst;
public int itemlockEndLast;
public bool updateLockedItem;
private void Awake()
{
if (LeftButtons_OR_Else_ONButtons != null && RightButtons_OR_Else_OFFButtons != null)
{
for (int i = 0; i < LeftButtons_OR_Else_ONButtons.Count; i++)
{
if (LeftButtons_OR_Else_ONButtons[i] != null)
{
LeftButtons_OR_Else_ONButtons[i] = LeftButtons_OR_Else_ONButtons[i].gameObject.GetComponent<Button>();
}
if (RightButtons_OR_Else_OFFButtons[i] != null)
{
RightButtons_OR_Else_OFFButtons[i] = RightButtons_OR_Else_OFFButtons[i].gameObject.GetComponent<Button>();
}
}
}
//lockItems = new bool[LeftButtons_OR_Else_ONButtons.Count];
itemLockStart = new int[LeftButtons_OR_Else_ONButtons.Count];
itemLockEnd = new int[LeftButtons_OR_Else_ONButtons.Count];
lockItemsStartValues = new bool[lockItems.Length];
for (int i = 0; i < lockItems.Length; i++)
{
lockItemsStartValues[i] = lockItems[i];
}
if (selectedItem.Any())
{
if (selectedItemHighlightImage != null)
{
for (int i = 0; i < selectedItem.Count; i++)
{
selectedItem[i].GetComponent<Image>().sprite = selectedItemHighlightImage;
}
}
}
if (buttonsVertical.Any())
{
for (int i = 0; i < buttonsVertical.Count; i++)
{
buttonsVertical[i] = buttonsVertical[i].gameObject.GetComponent<Button>();
}
}
}
private void Start()
{
}
public void ResetToStartValues()
{
//lockItems = lockItemsStartValues;
for (int i = 0; i < lockItemsStartValues.Length; i++)
{
lockItems[i] = lockItemsStartValues[i];
}
UIMenuControllerManager.Getinstance().menuItemIndexVertical = 0;
UIMenuControllerManager.Getinstance().menuItemIndexHorizontal = 0;
}
private void OnDisable()
{
print("Bitch I'm disabled");
updateMaxItems = true;
UIMenuControllerManager.Getinstance().menuItemIndexVertical = 0;
UIMenuControllerManager.Getinstance().menuItemIndexHorizontal = 0;
if (selectedItem.Any())
{
selectedItem[UIMenuControllerManager.Getinstance().menuItemIndexVertical].gameObject.SetActive(false);
}
}
private void UpdateScrollBarExtension()
{
if (_UIMenuControllerNavigationScrollbarExtension.Length != 0)
{
if (_UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical] != null)
{
_UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical].UpdateButtonsNavigation();
_UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical].UpdateScrollBarExtension();
if (_UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical].updateMaxItems)
{
UIMenuControllerManager.Getinstance().menuItemIndexHorizontalMax = _UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical].buttons.Count;
_UIMenuControllerNavigationScrollbarExtension[UIMenuControllerManager.Getinstance().menuItemIndexVertical].updateMaxItems = false;
print("Updated horizontal Max index");
}
}
}
}
// Update is called once per frame
void Update()
{
if (InputControlManager.Getinstance().IsUsingJoystick)
{
if (updateMaxItems)
{
UIMenuControllerManager.Getinstance().menuItemIndexVerticalMax = menuItemsMax;
updateMaxItems = false;
}
UIMenuControllerManager.Getinstance().DpadNavigateVertical();
#region Old
//if (UIMenuControllerManager.Getinstance().menuItemIndexVertical == UIMenuControllerManager.Getinstance().menuItemIndexVerticalMax)
//{
// if (!lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical - 1]) //If
// {
// UIMenuControllerManager.Getinstance().SelectedMenuItemUpdate(ref selectedItem, selectedItemHighlight);
// }
//}
//else if (!lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical])
#endregion
#region Highlights
if (selectedItem.Any())
{
if (!lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical])
{
//UIMenuControllerManager.Getinstance().SelectedMenuItemUpdate_TeleportHighlight(ref selectedItem, selectedItemHighlight);
UIMenuControllerManager.Getinstance().SelectedMenuItemUpdate(ref selectedItem);
}
}
#endregion
#region Vertical Buttons Navigation
if (buttonsVertical.Any())
{
UIMenuControllerManager.Getinstance().UpdateCurrentSelectedVerticalButton(buttonsVertical);
print("what the fuck");
}
#endregion
UIMenuControllerManager.Getinstance().DpadHorizontalSliderValuesUpdate(slider, sliderSpeed);
UIMenuControllerManager.Getinstance().DpadNavigateHorizontalButtonPress(LeftButtons_OR_Else_ONButtons, RightButtons_OR_Else_OFFButtons);
UpdateSelectedItem();
UpdateScrollBarExtension();
}
else
{
if (selectedItem.Any())
{
selectedItem[UIMenuControllerManager.Getinstance().menuItemIndexVertical].gameObject.SetActive(false);
}
}
}
private void UpdateSelectedItem()
{
if (UIMenuControllerManager.Getinstance().downDpadVericalButton)
{
if (lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical])
{
UIMenuControllerManager.Getinstance().menuItemIndexVertical++;
if (UIMenuControllerManager.Getinstance().menuItemIndexVertical == UIMenuControllerManager.Getinstance().menuItemIndexVerticalMax)
{
UIMenuControllerManager.Getinstance().menuItemIndexVertical = 0;
}
}
}
if (UIMenuControllerManager.Getinstance().upDpadVerticalButton)
{
if (lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical])
{
UIMenuControllerManager.Getinstance().menuItemIndexVertical--;
}
}
//if (updateLockedItem)
//{
if (UIMenuControllerManager.Getinstance().menuItemIndexVertical +1 < UIMenuControllerManager.Getinstance().menuItemIndexVerticalMax)
{
if (lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical + 1])
{
updateLockedItem = false;
}
else
{
updateLockedItem = true;
}
}
//}
}
public void lockItemStart(int itemLockStart)
{
if (updateLockedItem)
{
//lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical] = true;
this.itemLockStart[itemLockStart] = itemLockStart;
itemlockStartFirst = itemLockStart;
}
}
public void lockItemEnd(int itemLockEnd)
{
if (updateLockedItem)
{
//lockItems[UIMenuControllerManager.Getinstance().menuItemIndexVertical] = true;
this.itemLockEnd[itemLockEnd] = itemLockEnd;
itemlockEndLast = itemLockEnd;
lockTheItems();
}
}
public void UnlockItemStart(int itemLockStart)
{
if (updateLockedItem == false)
{
itemlockStartFirst = itemLockStart;
print("Unlock item start");
}
}
public void UnlockItemEnd(int itemLockEnd)
{
if (updateLockedItem == false)
{
itemlockEndLast = itemLockEnd;
UnlockItems();
}
}
private void UnlockItems()
{
for (int i = itemlockStartFirst - 1; i <= itemlockEndLast; i++)
{
lockItems[i] = false;
print("Unlock the items");
}
}
private void lockTheItems()
{
for (int i = itemlockStartFirst; i <= itemlockEndLast; i++)
{
lockItems[i] = true;
}
}
}