using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 坐骑外观 /// public class HorseSkinWin : UIBase { [SerializeField] Button seeAttrBtn; [SerializeField] HorseController horseModel; [SerializeField] Text horseName; [SerializeField] Text getWayText; [SerializeField] Text attrText; [SerializeField] ScrollerController scroller; [SerializeField] Transform changeOPObj; [SerializeField] UIEffectPlayer lvUpEffect; [SerializeField] Button lvUpBtn; [SerializeField] Text lvUpText; [SerializeField] Text lvUpCostText; [SerializeField] Image lvUpItemImg; [SerializeField] Button changeSkinBtn; [SerializeField] Text timeText; [SerializeField] Transform inSkinMarkObj; //幻化中 [SerializeField] Button unlockBtn; [SerializeField] Text unlockCostText; [SerializeField] Image unlockItemImg; protected override void InitComponent() { seeAttrBtn.AddListener(OnSeeAttrBtnClick); lvUpBtn.AddListener(OnLvUpBtnClick); changeSkinBtn.AddListener(OnChangeSkinBtnClick); unlockBtn.AddListener(OnUnlockBtnClick); } protected override void OnPreOpen() { HorseManager.Instance.selectSkinID = HorseManager.Instance.GetUsingHorseSkinID(); HorseManager.Instance.SortHorseSkinList(); HorseManager.Instance.OnSkinUpdateEvent += OnSkinUpdateEvent; HorseManager.Instance.OnSelectEvent += OnSelectEvent; scroller.OnRefreshCell += OnRefreshCell; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; PlayerDatas.Instance.playerDataRefreshEvent += OnRefreshPlayerData; CreateScroller(); Display(); } protected override void OnPreClose() { HorseManager.Instance.OnSkinUpdateEvent -= OnSkinUpdateEvent; HorseManager.Instance.OnSelectEvent -= OnSelectEvent; scroller.OnRefreshCell -= OnRefreshCell; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; PlayerDatas.Instance.playerDataRefreshEvent -= OnRefreshPlayerData; } void OnSkinUpdateEvent() { HorseManager.Instance.SortHorseSkinList(); Display(); } void OnRefreshPlayerData(PlayerDataType type) { if (type == PlayerDataType.EquipShowSwitch) { Display(); } } void OnSelectEvent() { Display(); } void Display() { var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.selectSkinID); horseModel.Create(HorseManager.Instance.selectSkinID, PhantasmPavilionManager.Instance.GetMyModelSkinID()); if (string.IsNullOrEmpty(skinConfig.getWay)) { getWayText.text = ""; } else { getWayText.text = Language.Get("PhantasmPavilion06", skinConfig.getWay); } if (skinConfig.AttrIDList.Length == 0) { attrText.text = ""; } else { attrText.text = GetSkinAttrSring(skinConfig); } scroller.m_Scorller.RefreshActiveCellViews(); bool isActive = HorseManager.Instance.IsSkinActive(HorseManager.Instance.selectSkinID); var skinData = HorseManager.Instance.GetSkinData(HorseManager.Instance.selectSkinID); if (skinConfig.StarMax > 0 && skinData != null && skinData.Star > 0) { horseName.text = skinConfig.Name + "+" + skinData.Star; } else { horseName.text = skinConfig.Name; } if (isActive) { changeOPObj.SetActive(true); unlockBtn.SetActive(false); if (skinConfig.StarMax > 0) { lvUpBtn.SetActive(true); if (skinData.Star >= skinConfig.StarMax) { lvUpCostText.SetActive(false); lvUpText.text = Language.Get("L1055"); lvUpBtn.SetInteractable(false); } else { lvUpBtn.SetInteractable(true); lvUpText.text = Language.Get("L1109"); lvUpCostText.SetActive(true); lvUpCostText.text = UIHelper.ShowUseItem(PackType.Item, skinConfig.UnlockValue, skinConfig.UpNeedCnt); lvUpItemImg.SetItemSprite(skinConfig.UnlockValue); } } else { lvUpBtn.SetActive(false); } if (HorseManager.Instance.selectSkinID == HorseManager.Instance.GetUsingHorseSkinID()) { changeSkinBtn.SetActive(false); inSkinMarkObj.SetActive(true); } else { changeSkinBtn.SetActive(true); inSkinMarkObj.SetActive(false); } ShowTime(); } else { changeOPObj.SetActive(false); unlockBtn.SetActive(true); if (skinConfig.UnlockWay == 1) { unlockCostText.SetActive(false); } else { unlockCostText.SetActive(true); unlockCostText.text = UIHelper.ShowUseItem(PackType.Item, skinConfig.UnlockValue, skinConfig.UnlockNeedCnt); unlockItemImg.SetItemSprite(skinConfig.UnlockValue); } } } void ShowTime() { bool isActive = HorseManager.Instance.IsSkinActive(HorseManager.Instance.selectSkinID); var skinData = HorseManager.Instance.GetSkinData(HorseManager.Instance.selectSkinID); var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.selectSkinID); if (isActive) { if (skinConfig.ExpireMinutes > 0) { timeText.SetActive(true); timeText.text = Language.Get("PhantasmPavilion10", TimeUtility.SecondsToShortDHMS(skinData.EndTime - TimeUtility.AllSeconds)); } else { timeText.SetActive(false); } } } void OnSecondEvent() { ShowTime(); } void CreateScroller() { scroller.Refresh(); for (int i = 0; i < HorseManager.Instance.sortSkinList.Count; i++) { if (i % 3 == 0) { scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as HorseSkinLineCell; _cell.Display(cell.index); } void OnSeeAttrBtnClick() { AttributeManager.Instance.OpenTotalAttributeWin(HorseManager.Instance.skinAttrDic); } string GetSkinAttrSring(HorseSkinConfig config) { var dict = HorseManager.Instance.GetAttrBySkinID(config); var attrList = new List(); var skinData = HorseManager.Instance.GetSkinData(config.SkinID); if (skinData != null) { //升星 if (skinData.Star == 0 || skinData.Star >= config.StarMax) { foreach (var kv in dict) { attrList.Add(UIHelper.AppendColor(TextColType.itemchuanqi, PlayerPropertyConfig.GetFullDescription(kv.Key, kv.Value))); } return Language.Get("PhantasmPavilion07") + string.Join(Language.Get("L1112"), attrList); } else { int i = 0; foreach (var kv in dict) { attrList.Add(UIHelper.AppendColor(TextColType.itemchuanqi, PlayerPropertyConfig.GetFullDescription(kv.Key, kv.Value)) + Language.Get("PhantasmPavilion12", UIHelper.AppendColor(TextColType.Green, "+" + PlayerPropertyConfig.GetValueDescription(kv.Key, config.AttrPerStarAddList[i])))); i++; } return Language.Get("PhantasmPavilion07") + string.Join(Language.Get("L1112"), attrList); } } else { foreach (var kv in dict) { attrList.Add(UIHelper.AppendColor(TextColType.itemchuanqi, PlayerPropertyConfig.GetFullDescription(kv.Key, kv.Value))); } return Language.Get("PhantasmPavilion07") + string.Join(Language.Get("L1112"), attrList); } } void OnLvUpBtnClick() { var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.selectSkinID); if (ItemLogicUtility.CheckItemCount(PackType.Item, skinConfig.UnlockValue, skinConfig.UpNeedCnt, 2)) { HorseManager.Instance.SendSkinOP(3, HorseManager.Instance.selectSkinID); lvUpEffect.Play(); SysNotifyMgr.Instance.ShowTip("Success"); } } void OnChangeSkinBtnClick() { HorseManager.Instance.SendSkinOP(2, HorseManager.Instance.selectSkinID); } void OnUnlockBtnClick() { var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.selectSkinID); if (ItemLogicUtility.CheckItemCount(PackType.Item, skinConfig.UnlockValue, skinConfig.UnlockNeedCnt, 2)) { HorseManager.Instance.SendSkinOP(1, HorseManager.Instance.selectSkinID); } } }