using asap.core; using cfg; using GameCore; using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class HomeBeilvPanel : MonoBehaviour { public Button btn_close; public List beilv_special; public List beilv_normal; public Action OnBeilvClick; PlayerData playerData; Tables _tables; public void Init() { playerData = GContext.container.Resolve(); _tables = GContext.container.Resolve(); for (int i = 0; i < beilv_special.Count; i++) { BeilvItem index = beilv_special[i]; beilv_special[i].btn.onClick.AddListener(() => { OnClick(index); }); } for (int i = 0; i < beilv_normal.Count; i++) { BeilvItem index = beilv_normal[i]; beilv_normal[i].btn.onClick.AddListener(() => { OnClick(index); }); } btn_close.onClick.AddListener(() => { gameObject.SetActive(false); }); } public void OnShow() { var DataList = _tables.TbEnergyDef.DataList; int normalCount = beilv_normal.Count; int Mag; int energy = playerData.Energy; int index = 0; var buffTimeData = GContext.container.Resolve().GetWeelyBuffTimeData(); bool isSuperEnergy = buffTimeData != null; for (int i = 0; i < DataList.Count; i++) { int demandEnergy = DataList[i].Energy; if (isSuperEnergy) { demandEnergy = DataList[i].FishBuffEnergy; } Mag = DataList[i].Mag; if (i < normalCount) { beilv_normal[i].beilvIndex = i; beilv_normal[i].beilv = Mag; beilv_normal[i].text_beilv.text = $"x{Mag}"; beilv_normal[i].isLock = energy < demandEnergy; beilv_normal[i].isShow = true; } if (DataList[i].Energy == -1 && index < beilv_special.Count) { beilv_special[index].beilvIndex = i; beilv_special[index].beilv = Mag; beilv_special[index].text_beilv.text = $"x{Mag}"; beilv_special[index].isLock = energy < demandEnergy; beilv_special[index].isShow = isSuperEnergy; index++; } } SetSelect(); } void SetSelect() { int normalCount = _tables.TbEnergyDef.DataList.Where(x => x.Energy != -1).Count(); for (int i = 0; i < beilv_normal.Count; i++) { if (beilv_normal[i].isShow) { beilv_normal[i].bg_selected.gameObject.SetActive(playerData.magnification == i); beilv_normal[i].bg_normal.SetActive(!beilv_normal[i].isLock); beilv_normal[i].bg_gray.SetActive(beilv_normal[i].isLock); } beilv_normal[i].gameObject.SetActive(beilv_normal[i].isShow); } for (int i = 0; i < beilv_special.Count; i++) { if (beilv_special[i].isShow) { beilv_special[i].bg_selected.gameObject.SetActive(playerData.magnification - normalCount == i); beilv_special[i].bg_normal.SetActive(!beilv_special[i].isLock); beilv_special[i].bg_gray.SetActive(beilv_special[i].isLock); } beilv_special[i].gameObject.SetActive(beilv_special[i].isShow); } } public void OnClick(BeilvItem beilv) { OnBeilvClick?.Invoke(beilv); } }