/// #pkgName FGUI包名 /// #panelName UIPanel名字 /// #UIName = $"{#pkgName}{#panelName}" UIKey名字 /// 该脚本由模板创建 /// created by cb 2024 using System.Collections.Generic; using FairyGUI; using FL.Data; using XGame; using XGame.Database; using XGame.Framework.UI; namespace FL.FGUI { /// /// UI逻辑处理类 /// /// public partial class PartnerPartnerBaseItemCtrl : UIController { private List _starIconList; protected override void OnEnable(object intent) { AddUIListenres(); } protected override void OnDisable() { RemoveUIListenres(); ClearStar(); } #region UI事件 private void AddUIListenres() { } private void RemoveUIListenres() { } #endregion public void ShowUI(int id, bool showOther) { if (id <= 0) { VM.PartnerImg.visible = false; VM.QualityImg.icon = AddressableDefine.PartnerEmptyDi(); VM.ShowOther.selectedIndex = 1; VM.LevelTxt.visible = false; return; } var table = PartnerTableRepo.Get(id); if (table == null) { Log.Error($"圣兵表不存在id:{id}"); return; } VM.PartnerImg.visible = true; VM.QualityImg.icon = AddressableDefine.PartnerQualityFrame((int)table.Quality); VM.PartnerImg.icon = table.Icon; var partnerData = PartnersData.Instance.GetPartnerAttrByTableId(id); var level = partnerData?.Level ?? 0; bool bShowLevel = level > 0; VM.LevelTxt.visible = bShowLevel; if (bShowLevel) { VM.LevelTxt.text = $"LV.{level}"; } VM.ShowOther.selectedIndex = showOther ? 0 : 1; if (showOther) { var starLv = partnerData?.RisingStarLv == null ? 0 : partnerData.RisingStarLv; ShowStarUI(starLv); var starTable = partnerStarUpTableRepo.GetPartnerStarTable(id, starLv); if (starTable == null) { VM.SpPbar.visible = false; } else { VM.SpPbar.GetChild("icon").asLoader.url = AddressableDefine.PartnerSpProgressDi((int)table.Quality); VM.SpPbar.max = starTable.StarUpCost; VM.SpPbar.value = ItemData.Instance.GetItemNum(starTable.PetId); VM.SpPbar.visible = true; } } } private void ShowStarUI(int starLv) { InitStarList(); int starNum = starLv == 0 ? 0 : starLv % PartnersData.MaxStarNum; if (starLv > 0 && starNum == 0) starNum = PartnersData.MaxStarNum; VM.StarRating.GetController("StarNumCtrl").selectedIndex = starNum; ShowStarIcon(starNum, starLv); } private void ClearStar() { if (_starIconList != null) { _starIconList.Clear(); _starIconList = null; } } private void InitStarList() { if (_starIconList == null) { _starIconList = new List() { VM.StarRating.GetChild("Star1").asLoader, VM.StarRating.GetChild("Star2").asLoader, VM.StarRating.GetChild("Star3").asLoader, VM.StarRating.GetChild("Star4").asLoader, VM.StarRating.GetChild("Star5").asLoader, }; } foreach (var item in _starIconList) { item.visible = false; } } private void ShowStarIcon(int count, int starLv) { if (count > 0) { int starStep = PartnersData.Instance.GetStarStep(starLv); for (int i = 0; i < count; i++) { if (_starIconList[i] != null) { _starIconList[i].visible = true; _starIconList[i].icon = AddressableDefine.PartnerStarIconName(starStep); } } } } } }