using TMPro;
using System;
using PhxhSDK;
using UnityEngine;
using UnityEngine.UI;
using Gameplay.Level;
using Framework.Event;
using Gameplay.Manager;
using Framework.Manager;
using Sirenix.OdinInspector;
using System.Collections.Generic;
public class BuildBoot : MonoBehaviour
{
[LabelText("当前条件")] public int CurCondition;
///
/// 节点类
///
private class Node
{
public string Name;
public GameObject NodeObj;
public GameObject BubbleObj;
public Dictionary Options;
public Node(GameObject root)
{
Name = root.name;
Options = new Dictionary();
foreach (Transform child in root.transform)
{
if (!child.gameObject.name.Equals("Btn"))
{
var option = new Option(child.gameObject);
Options.Add(child.gameObject.name, option);
}
else
{
BubbleObj = child.gameObject;
}
}
}
public Option GetOption(string optionName)
{
return Options.GetValueOrDefault(optionName);
}
///
/// 关闭其他选项表现
///
public void OptionDisplay(Option option)
{
if (option == null)
{
CloseAllOptionButBubble(true);
return;
}
foreach (var optionInfo in Options.Values)
{
optionInfo.SetOptionActive(option);
}
BubbleObj.SetActive(false);
}
public void CloseAllOptionButBubble(bool butBubble)
{
foreach (var optionInfo in Options.Values)
{
optionInfo.SetOptionActive(false);
}
BubbleObj.SetActive(butBubble);
}
}
///
/// 选项类
///
private class Option
{
public string Name;
public GameObject NodeObj;
public GameObject OptionObj;
public GameObject NormalObj;
public Option(GameObject root)
{
Name = root.name;
NodeObj = root.transform.parent.gameObject;
OptionObj = root;
NormalObj = root.transform.Find("Normal").gameObject;
}
public void SetOptionActive(Option option)
{
if (option == null)
{
OptionObj.SetActive(false);
return;
}
OptionObj.SetActive(Name.Equals(option.Name));
}
public void SetOptionActive(bool active)
{
OptionObj.SetActive(active);
}
}
///
/// 物品栏类
///
private class BuildBar
{
private GameObject _bar;
private Dictionary _buildItem;
private Dictionary _itemTrans;
private TMP_Text _condition;
private const string ContentPath = "Bar_Tip/Scroll View/Viewport/Content";
private const string IconItemTemplate = "Bar_Tip/Scroll View/Viewport/Content/Item";
private const string TipPath = "Bar_Tip";
private const string ConditionText = "Level\n{0}/{1}";
private const string ItemName = "Item{0}";
private readonly Color _lockColor = new Color(152f / 255f, 0f, 0f);
private readonly Color _unlockColor = new Color(255f, 255f, 255f);
private Action