using UnityEngine; /// /// 公会等级界面 /// public class GuildLevelWin : UIBase { [SerializeField] Transform noMax; [SerializeField] Transform max; [SerializeField] GuildLevelItem nowItem; [SerializeField] GuildLevelItem nextItem; [SerializeField] GuildLevelItem maxItem; [SerializeField] ImageEx sliderImage; [SerializeField] TextEx sliderText; protected override void OnPreOpen() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; Display(); } protected override void OnPreClose() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; } private void OnRefreshFairyInfo() { Display(); } private void Display() { PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (fairyData == null || !fairyData.HasFairy || fairyData.fairy == null) return; int nowFamilyLV = fairyData.fairy.FamilyLV; bool hasNextLv = FamilyConfig.TryGetNextLvConfig(nowFamilyLV, out FamilyConfig nowConfig, out FamilyConfig nextConfig); noMax.SetActive(hasNextLv); max.SetActive(!hasNextLv); nowItem.SetActive(hasNextLv); nextItem.SetActive(hasNextLv); maxItem.SetActive(!hasNextLv); if (hasNextLv) { nowItem.Display(nowConfig); nextItem.Display(nextConfig); RefreshSlider(); return; } if (!FamilyConfig.TryGetMaxFamilyLVConfig(out FamilyConfig maxConfig)) return; maxItem.Display(maxConfig); } public void RefreshSlider() { PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (fairyData == null || !fairyData.HasFairy || fairyData.fairy == null) return; int nowFamilyLV = fairyData.fairy.FamilyLV; bool hasNextLv = FamilyConfig.TryGetNextLvConfig(nowFamilyLV, out FamilyConfig nowConfig, out FamilyConfig nextConfig); if (hasNextLv) { int familyLVExp = fairyData.fairy.FamilyLVExp; sliderImage.fillAmount = nowConfig.NeedExp == 0 ? 1 : (float)familyLVExp / nowConfig.NeedExp; sliderText.text = nowConfig.NeedExp == 0 ? Language.Get("L1055") : StringUtility.Concat(familyLVExp.ToString(), "/", nowConfig.NeedExp.ToString()); } } }