using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
|
|
public class LogicTrayUI : MonoBehaviour
|
|
{
|
|
|
|
[SerializeField]
|
|
protected List<LogicBlock> list;
|
|
[SerializeField]
|
|
protected GameObject Prefab;
|
|
[SerializeField]
|
|
protected int insertIndex = -1;
|
|
[SerializeField]
|
|
private Transform content;
|
|
|
|
|
|
public void Start()
|
|
{
|
|
UpdateDisplay();
|
|
}
|
|
|
|
public void OnHoverStart(BagItem item, RectTransform rect)
|
|
{
|
|
insertIndex = content.childCount;
|
|
UpdateDisplay();
|
|
}
|
|
|
|
public void OnHoverEnd(BagItem item, RectTransform rect)
|
|
{
|
|
insertIndex = -1;
|
|
UpdateDisplay();
|
|
}
|
|
|
|
public void OnHoverUpdate(BagItem item, RectTransform rect)
|
|
{
|
|
|
|
foreach(Transform child in content)
|
|
{
|
|
RectTransform childRect = child as RectTransform;
|
|
if (child == null)
|
|
continue;
|
|
|
|
if (rect.GlobalRect().Overlaps(childRect.GlobalRect()))
|
|
{
|
|
if (insertIndex != child.GetSiblingIndex())
|
|
{
|
|
insertIndex = child.GetSiblingIndex();
|
|
UpdateDisplay();
|
|
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
[ContextMenu("Update Display")]
|
|
public void UpdateDisplay()
|
|
{
|
|
int destroyedCount = content.childCount;
|
|
foreach (Transform child in content)
|
|
Destroy(child.gameObject);
|
|
|
|
|
|
foreach(LogicBlock element in list)
|
|
{
|
|
GameObject elementObject = Instantiate(Prefab, content);
|
|
elementObject.GetComponentInChildren<TextMeshProUGUI>().text = element.name;
|
|
}
|
|
|
|
if (insertIndex != -1)
|
|
{
|
|
GameObject elementObject = Instantiate(Prefab, content);
|
|
elementObject.GetComponentInChildren<TextMeshProUGUI>().text = "insert";
|
|
elementObject.GetComponentInChildren<Image>().color = new Color(0.5f, 0.5f, 0.5f, 0.25f);
|
|
|
|
elementObject.transform.SetSiblingIndex(destroyedCount + insertIndex);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|