285 lines
9.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|