//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, April 16, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class PetMountTipWin : Window { [SerializeField] RectTransform m_Pivot; [SerializeField] ImageEx m_Label; [SerializeField] Text m_ItemName; [SerializeField] TipBasePropertyWidget m_BaseProperty; [SerializeField] TipPetMountSkillWidget m_PetMountSkill; [SerializeField] TipAuctionTipWidget m_AuctionWidget; [SerializeField] TipPetMountDescriptionWidget m_DescriptionWidget; [SerializeField] TipModelWidget m_Model; [SerializeField] OperateButton[] m_OperateButtons; [SerializeField] Button m_Close; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.SetListener(() => { WindowCenter.Instance.Close(); }); } protected override void OnPreOpen() { m_Pivot.localScale = Vector3.zero; } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); StartCoroutine("Co_DelayDisplay"); } #endregion private void DisplayBaseInfo() { var baseInfo = EquipTipUtility.mainTipData.baseInfo; var config = ItemConfig.Get(baseInfo.itemId); m_ItemName.text = config.ItemName; m_ItemName.color = UIHelper.GetUIColor(config.ItemColor); if (baseInfo.isAuction) { m_Label.gameObject.SetActive(true); m_Label.SetSprite("Item_Auction_2"); m_Label.gray = baseInfo.auctionSurplusTime <= 0; } else { m_Label.gameObject.SetActive(false); } } private void DisplayBaseProperty() { m_BaseProperty.Display(EquipTipUtility.mainTipData.petMountBaseProperty); } private void DisplaySkills() { var baseInfo = EquipTipUtility.mainTipData.baseInfo; var config = ItemConfig.Get(baseInfo.itemId); switch (config.Type) { case 26: m_PetMountSkill.Display(ShowType.Pet, baseInfo.itemId); break; case 41: case 42: m_PetMountSkill.Display(ShowType.Mount, baseInfo.itemId); break; } } private void DisplayAuctionInfo() { var baseInfo = EquipTipUtility.mainTipData.baseInfo; m_AuctionWidget.gameObject.SetActive(baseInfo.isAuction); if (baseInfo.isAuction) { var overdueTime = DateTime.Now.AddSeconds((double)baseInfo.auctionSurplusTime); m_AuctionWidget.Display(overdueTime); } } private void DisplayDescription() { var baseInfo = EquipTipUtility.mainTipData.baseInfo; m_DescriptionWidget.gameObject.SetActive(!baseInfo.isAuction); if (!baseInfo.isAuction) { m_DescriptionWidget.Display(baseInfo.itemId); } } private void DisplayModel() { var baseInfo = EquipTipUtility.mainTipData.baseInfo; var config = ItemConfig.Get(baseInfo.itemId); switch (config.Type) { case 26: var petId = PetInfoConfig.GetItemUnLockPet(baseInfo.itemId); var petConfig = PetInfoConfig.Get(petId); m_Model.Display(petId, ModelShowType.Pet, petConfig.ShowFightPower); break; case 41: case 42: var horseId = HorseConfig.GetItemUnLockHorse(baseInfo.itemId); var horseConfig = HorseConfig.Get(horseId); m_Model.Display(horseConfig.Model, ModelShowType.Mount, horseConfig.ShowFightPower); break; } } private void DisplayOperateButton() { var operates = EquipTipUtility.mainTipData.operates; var guid = EquipTipUtility.mainTipData.guid; if (operates.IsNullOrEmpty()) { for (int i = 0; i < m_OperateButtons.Length; i++) { var button = m_OperateButtons[i]; button.SetActive(false); } } else { for (int i = 0; i < m_OperateButtons.Length; i++) { var button = m_OperateButtons[i]; if (i < operates.Count) { button.SetActive(true); button.Bind(operates[i], guid); } else { button.SetActive(false); } } } } IEnumerator Co_DelayDisplay() { yield return null; yield return null; m_Pivot.localScale = Vector3.one; DisplayBaseInfo(); DisplayBaseProperty(); DisplaySkills(); DisplayAuctionInfo(); DisplayDescription(); DisplayModel(); DisplayOperateButton(); } [Serializable] public class OperateButton { [SerializeField] RectTransform m_Container; [SerializeField] Button m_Button; [SerializeField] Text m_Title; ItemOperateType operateType; string guid; public void SetActive(bool active) { this.m_Container.gameObject.SetActive(active); } public void Bind(ItemOperateType type, string guid) { operateType = type; this.guid = guid; switch (type) { case ItemOperateType.putAway: this.m_Title.text = "上架"; break; case ItemOperateType.sell: this.m_Title.text = "出售"; break; case ItemOperateType.makeUse: this.m_Title.text = "使用"; break; case ItemOperateType.putOut: this.m_Title.text = "取出"; break; case ItemOperateType.putIn: this.m_Title.text = "放入"; break; default: this.m_Title.text = ""; break; } m_Button.SetListener(() => { WindowCenter.Instance.Close(); EquipTipUtility.Operate(operateType, this.guid); }); } } public enum ShowType { None, Pet, Mount, } } }