2025-10-11 11:55:00 +08:00

279 lines
10 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using YiLiao.JingLuoXueWei;
using ZXKFramework;
public class LeftBigBtnPanel : UIBase
{
/// <summary>
/// 所有经络按钮
/// </summary>
List<Button> allBigBtn = new List<Button>();
/// <summary>
/// 所有经络按钮以及相对应的子按钮父物体
/// </summary>
Dictionary<Button, GameObject> JingLuoXueWeiDict = new Dictionary<Button, GameObject>();
/// <summary>
/// 已经创建子按钮的经络
/// </summary>
List<string> isCreateBtnLst = new List<string>();
/// <summary>
/// 已经创建说明文本的经络
/// </summary>
List<string> isCreateTxtLst = new List<string>();
public override string GroupName => typeof(LeftBigBtnPanel).Name;
public override string Name => typeof(LeftBigBtnPanel).Name;
GameManager gameManager;
public override void Init(IUIManager uictrl)
{
base.Init(uictrl);
gameManager = GameManager.Instance;
#region
Button FeiJing = transform.FindFirst<Button>("肺经");
GameObject feiJingChild = transform.FindFirst("肺经子按钮");
allBigBtn.Add(FeiJing);
JingLuoXueWeiDict.Add(FeiJing, feiJingChild);
Button DaChang = transform.FindFirst<Button>("大肠");
GameObject daChangChild = transform.FindFirst("大肠子按钮");
allBigBtn.Add(DaChang);
JingLuoXueWeiDict.Add(DaChang, daChangChild);
Button WeiJing = transform.FindFirst<Button>("胃经");
GameObject weiJingChild = transform.FindFirst("胃经子按钮");
allBigBtn.Add(WeiJing);
JingLuoXueWeiDict.Add(WeiJing, weiJingChild);
Button PiJing = transform.FindFirst<Button>("脾经");
GameObject piJingChild = transform.FindFirst("脾经子按钮");
allBigBtn.Add(PiJing);
JingLuoXueWeiDict.Add(PiJing, piJingChild);
Button XinJing = transform.FindFirst<Button>("心经");
GameObject xinJingChild = transform.FindFirst("心经子按钮");
allBigBtn.Add(XinJing);
JingLuoXueWeiDict.Add(XinJing, xinJingChild);
Button XiaoChang = transform.FindFirst<Button>("小肠");
GameObject xiaoChangChild = transform.FindFirst("小肠子按钮");
allBigBtn.Add(XiaoChang);
JingLuoXueWeiDict.Add(XiaoChang, xiaoChangChild);
Button PangGuang = transform.FindFirst<Button>("膀胱");
GameObject pangGuangChild = transform.FindFirst("膀胱子按钮");
allBigBtn.Add(PangGuang);
JingLuoXueWeiDict.Add(PangGuang, pangGuangChild);
Button ShenJing = transform.FindFirst<Button>("肾经");
GameObject shenJingChild = transform.FindFirst("肾经子按钮");
allBigBtn.Add(ShenJing);
JingLuoXueWeiDict.Add(ShenJing, shenJingChild);
Button XinBao = transform.FindFirst<Button>("心包");
GameObject xinBaoChild = transform.FindFirst("心包子按钮");
allBigBtn.Add(XinBao);
JingLuoXueWeiDict.Add(XinBao, xinBaoChild);
Button SanJiao = transform.FindFirst<Button>("三焦");
GameObject sanJiaoChild = transform.FindFirst("三焦子按钮");
allBigBtn.Add(SanJiao);
JingLuoXueWeiDict.Add(SanJiao, sanJiaoChild);
Button DanJing = transform.FindFirst<Button>("胆经");
GameObject danJingChild = transform.FindFirst("胆经子按钮");
allBigBtn.Add(DanJing);
JingLuoXueWeiDict.Add(DanJing, danJingChild);
Button GanJing = transform.FindFirst<Button>("肝经");
GameObject ganJingChild = transform.FindFirst("肝经子按钮");
allBigBtn.Add(GanJing);
JingLuoXueWeiDict.Add(GanJing, ganJingChild);
Button RenMai = transform.FindFirst<Button>("任脉");
GameObject renMaiChild = transform.FindFirst("任脉子按钮");
allBigBtn.Add(RenMai);
JingLuoXueWeiDict.Add(RenMai, renMaiChild);
Button DuMai = transform.FindFirst<Button>("督脉");
GameObject duMaiChild = transform.FindFirst("督脉子按钮");
allBigBtn.Add(DuMai);
JingLuoXueWeiDict.Add(DuMai, duMaiChild);
Button QiXue = transform.FindFirst<Button>("奇穴");
GameObject qiXueChild = transform.FindFirst("奇穴子按钮");
allBigBtn.Add(QiXue);
JingLuoXueWeiDict.Add(QiXue, qiXueChild);
#endregion
for (int i = 0; i < allBigBtn.Count; i++)
{
int id = i;
allBigBtn[i].onClick.AddListener(() =>
{
//this.Log(id);
BtnAddListener(allBigBtn[id]);
});
}
}
/// <summary>
/// 经络按钮点击事件
/// </summary>
/// <param name="btn"></param>
void BtnAddListener(Button btn)
{
if (!btn.GetComponent<BtnImage>().isOpen)//当前按钮处于选中状态
{
for (int j = 0; j < allBigBtn.Count; j++)
{
if (allBigBtn[j].Equals(btn))
{
///切换选中按钮的背景
allBigBtn[j].GetComponent<BtnImage>().OnEnterBtn();
btn.GetComponent<BtnImage>().isOpen = true;
//显示经络
string nam = MVC.GetModel<GameModel>().excelData.GetJingLuoBigname(allBigBtn[j].GetComponentInChildren<Text>().text).activeGame;
ActiveSelectJingLuo(nam);
///根据大按钮的名称在表格中查找到相应的子物体并进行实例化
//if (!isCreateBtnLst.Contains(allBigBtn[j].GetComponentInChildren<Text>().text))
//{
CreateBtnAsName(allBigBtn[j]);
CreateTxtAsName(allBigBtn[j]);
//}
//打开相应的子按钮
JingLuoXueWeiDict[allBigBtn[j]].SetActive(true);
//关闭子按钮下的所有按钮的选中状态
foreach (var item in JingLuoXueWeiDict)
{
//if (item.Key.Equals(allBigBtn[j]))
//{
// item.Value.SetActive(true);
//}
//else
//{
// item.Value.SetActive(false);
//}
for (int i = 0; i < item.Value.transform.childCount; i++)
{
item.Value.transform.GetChild(i).GetComponent<BtnImage>().OnExitBtn();
}
}
LayoutRebuilder.ForceRebuildLayoutImmediate(allBigBtn[j].transform.parent.GetComponent<RectTransform>());
//打开提示框
uiManager.CloseUI<TipSmallPanel>();
gameManager.uiManager.ShowUI<TipBigPanel>(null, btn.GetComponentInChildren<Text>().text);
}
else
{
allBigBtn[j].GetComponent<BtnImage>().OnExitBtn();
}
}
}
else///当前按钮处于未选中状态
{
JingLuoXueWeiDict[btn].SetActive(false);
LayoutRebuilder.ForceRebuildLayoutImmediate(btn.transform.parent.GetComponent<RectTransform>());
btn.GetComponent<BtnImage>().isOpen = false;
}
}
/// <summary>
/// 根据表格创建子按钮
/// </summary>
/// <param name="btn"></param>
public void CreateBtnAsName(Button btn)
{
if (!isCreateBtnLst.Contains(btn.GetComponentInChildren<Text>().text))
{
List<JingLuoSmall> all = MVC.GetModel<GameModel>().excelData.allJingLuoSmall;
for (int i = 0; i < all.Count; i++)
{
if (all[i].name.Equals(btn.GetComponentInChildren<Text>().text))
{
GameObject go = Resources.Load<GameObject>("SmallBtn");
GameObject obj = GameObject.Instantiate(go, JingLuoXueWeiDict[btn].transform);
obj.name = all[i].XueWeiName_NoPinYin;
obj.GetComponentInChildren<Text>().text = all[i].XueWeiName_NoPinYin;
Button creatBtn = obj.GetComponent<Button>();
creatBtn.onClick.AddListener(() =>
{
for (int i = 0; i < allBigBtn.Count; i++)
{
allBigBtn[i].GetComponent<BtnImage>().OnExitBtn();
}
creatBtn.GetComponent<BtnImage>().OnEnterBtn();
//关闭子按钮下的所有按钮的选中状态
foreach (var item in JingLuoXueWeiDict)
{
for (int i = 0; i < item.Value.transform.childCount; i++)
{
item.Value.transform.GetChild(i).GetComponent<BtnImage>().OnExitBtn();
}
}
uiManager.CloseUI<TipBigPanel>();
uiManager.ShowUI<TipSmallPanel>(null, creatBtn.GetComponentInChildren<Text>().text);
});
}
}
isCreateBtnLst.Add(btn.GetComponentInChildren<Text>().text);
}
}
public void CreateTxtAsName(Button btn)
{
if (!isCreateTxtLst.Contains(btn.GetComponentInChildren<Text>().text))
{
List<JingLuoSmall> all = MVC.GetModel<GameModel>().excelData.allJingLuoSmall;
for (int i = 0; i < all.Count; i++)
{
if (all[i].name.Equals(btn.GetComponentInChildren<Text>().text))
{
GameObject go = Resources.Load<GameObject>("穴位_Txt");
GameObject obj = GameObject.Instantiate(go, gameManager.transform.parent.FindFirst(all[i].gameObjectName).transform);
obj.name = all[i].XueWeiName_NoPinYin + all[i].gameObjectName;
obj.GetComponentInChildren<Text>().text = all[i].XueWeiName_NoPinYin;
}
}
isCreateTxtLst.Add(btn.GetComponentInChildren<Text>().text);
}
}
/// <summary>
/// 显示选中的经络并隐藏其他经络
/// </summary>
/// <param name="name"></param>
public void ActiveSelectJingLuo(string name)
{
for (int i = 0; i < gameManager.allJingLuoGame.Count; i++)
{
if (gameManager.allJingLuoGame[i].name.Equals(name))
{
gameManager.allJingLuoGame[i].SetActive(true);
}
else
{
gameManager.allJingLuoGame[i].SetActive(false);
}
}
}
}