using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using TMPro;
namespace Michsky.MUIP
{
public class ContextMenuSubMenu : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
public ContextMenuManager cmManager;
public ContextMenuContent cmContent;
public Animator subMenuAnimator;
public Transform itemParent;
public GameObject trigger;
[HideInInspector] public int subMenuIndex;
GameObject selectedItem;
Image setItemImage;
TextMeshProUGUI setItemText;
Sprite imageHelper;
string textHelper;
RectTransform listParent;
[HideInInspector] public bool enableFadeOut = true;
void OnEnable()
{
if (itemParent == null) { Debug.Log("[Context Menu] Item Parent is missing.", this); return; }
listParent = itemParent.parent.gameObject.GetComponent();
}
public void OnPointerClick(PointerEventData eventData)
{
if (cmManager.subMenuBehaviour == ContextMenuManager.SubMenuBehaviour.Click)
{
if (subMenuAnimator.GetCurrentAnimatorStateInfo(0).IsName("Menu In"))
{
subMenuAnimator.Play("Menu Out");
if (trigger != null) { trigger.SetActive(false); }
}
else
{
subMenuAnimator.Play("Menu In");
if (trigger != null) { trigger.SetActive(true); }
}
}
}
public void OnPointerEnter(PointerEventData eventData)
{
foreach (Transform child in itemParent)
Destroy(child.gameObject);
for (int i = 0; i < cmContent.contexItems[subMenuIndex].subMenuItems.Count; ++i)
{
bool nulLVariable = false;
if (cmContent.contexItems[subMenuIndex].subMenuItems[i].contextItemType == ContextMenuContent.ContextItemType.Button && cmManager.contextButton != null)
selectedItem = cmManager.contextButton;
else if (cmContent.contexItems[subMenuIndex].subMenuItems[i].contextItemType == ContextMenuContent.ContextItemType.Separator && cmManager.contextSeparator != null)
selectedItem = cmManager.contextSeparator;
else
{
Debug.LogError("[Context Menu] At least one of the item presets is missing. " +
"You can assign a new variable in Resources (Context Menu) tab. All default presets can be found in " +
"Modern UI Pack > Prefabs > Context Menu folder.", this);
nulLVariable = true;
}
if (nulLVariable == false)
{
GameObject go = Instantiate(selectedItem, new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
go.transform.SetParent(itemParent, false);
if (cmContent.contexItems[subMenuIndex].subMenuItems[i].contextItemType == ContextMenuContent.ContextItemType.Button)
{
setItemText = go.GetComponentInChildren();
textHelper = cmContent.contexItems[subMenuIndex].subMenuItems[i].itemText;
setItemText.text = textHelper;
Transform goImage = go.gameObject.transform.Find("Icon");
setItemImage = goImage.GetComponent();
imageHelper = cmContent.contexItems[subMenuIndex].subMenuItems[i].itemIcon;
setItemImage.sprite = imageHelper;
if (imageHelper == null)
setItemImage.color = new Color(0, 0, 0, 0);
Button itemButton = go.GetComponent