//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, March 12, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class ItemTipWin : Window { [SerializeField] Button m_Close; [SerializeField] TipItemBaseInfoWidget m_BaseInfoWidget; [SerializeField] TipItemDescriptionWidget m_DescriptionWidget; [SerializeField] TipAuctionTipWidget m_AuctionWidget; [SerializeField] TipModelWidget m_ModelWidget; [SerializeField] TipBuyItemWidget m_BuyItemWidget; [SerializeField] TipGetWayEntranceWidget m_GetWayEntranceWidget; [SerializeField] TipGetWaysWidget m_GetWaysWidget; [SerializeField] TipExchangesWidget m_ExchangeWidget; [SerializeField] TipOperateButton[] m_OperateButtons; PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.SetListener(CloseClick); } protected override void OnPreOpen() { this.transform.localScale = Vector3.zero; } protected override void OnAfterOpen() { packModel.refreshItemDayUseCountEvent += OnUseItem; } protected override void OnPreClose() { m_BuyItemWidget.Dispose(); StopAllCoroutines(); packModel.refreshItemDayUseCountEvent += OnUseItem; } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); StartCoroutine(Co_DelayOneFrame()); } #endregion IEnumerator Co_DelayOneFrame() { this.transform.localScale = new Vector3(0, 1, 0); DisplayBaseInfo(); DisplayItemDescription(); DisplayItemUseState(); DisplayAuctionInfo(); DisplayBuyItem(); DisplayGetWays(); DisplayExchanges(); DisplayOperateButton(); DisplayModel(); yield return null; yield return null; this.transform.localScale = Vector3.one; } private void DisplayBaseInfo() { var data = ItemTipUtility.mainTipData; m_BaseInfoWidget.Display(data.baseInfo); } private void DisplayItemDescription() { var data = ItemTipUtility.mainTipData; m_DescriptionWidget.Display(data.baseInfo.itemId); } private void OnUseItem(int itemId) { if (itemId == ItemTipUtility.mainTipData.itemId) { DisplayItemUseState(); } } private void DisplayItemUseState() { var data = ItemTipUtility.mainTipData; var count = packModel.GetItemUsedTimesToday(data.itemId); var config = ItemConfig.Get(data.itemId); m_DescriptionWidget.DisplayUseState(count, config.MaxSkillCnt); } private void DisplayAuctionInfo() { var data = ItemTipUtility.mainTipData; m_AuctionWidget.gameObject.SetActive(data.baseInfo.isAuction); if (data.baseInfo.isAuction) { var overdueTime = TimeUtility.ServerNow.AddSeconds((double)data.baseInfo.auctionSurplusTime); m_AuctionWidget.Display(overdueTime); } } private void DisplayModel() { var baseInfo = ItemTipUtility.mainTipData.baseInfo; var config = ItemConfig.Get(baseInfo.itemId); m_ModelWidget.gameObject.SetActive(config.Type == 124 || config.Type == 125); switch (config.Type) { case 124: var horseId = HorseConfig.GetItemUnLockHorse(config.EffectValueA1); var horseConfig = HorseConfig.Get(horseId); m_ModelWidget.Display(horseConfig.Model, ModelShowType.Mount, horseConfig.ShowFightPower); break; case 125: var petId = PetInfoConfig.GetItemUnLockPet(config.EffectValueA1); var petConfig = PetInfoConfig.Get(petId); m_ModelWidget.Display(petId, ModelShowType.Pet, petConfig.ShowFightPower); break; } } private void DisplayBuyItem() { m_BuyItemWidget.gameObject.SetActive(ItemTipUtility.mainTipData.goodId > 0); if (ItemTipUtility.mainTipData.goodId > 0) { m_BuyItemWidget.Display(ItemTipUtility.mainTipData.goodId); } } private void DisplayGetWays() { var getWay = ItemTipUtility.mainTipData.getWay; var hasGetWay = !getWay.ways.IsNullOrEmpty(); m_GetWayEntranceWidget.gameObject.SetActive(hasGetWay); m_GetWaysWidget.gameObject.SetActive(false); if (hasGetWay) { m_GetWayEntranceWidget.SetListener(() => { if (!m_GetWaysWidget.gameObject.activeSelf) { m_GetWaysWidget.Display(getWay); m_GetWaysWidget.Bind("ItemTipWin"); } else { m_GetWaysWidget.Hide(); } }); if (getWay.defaultUnfold) { m_GetWaysWidget.Display(getWay); m_GetWaysWidget.Bind("ItemTipWin"); } } } private void DisplayExchanges() { var itemId = ItemTipUtility.mainTipData.exchangeItemId; var hasExchange = ItemExchangeConfig.Has(itemId); m_ExchangeWidget.gameObject.SetActive(hasExchange); if (hasExchange) { m_ExchangeWidget.Display(itemId); m_ExchangeWidget.Bind("ItemTipWin"); } } private void DisplayOperateButton() { var operates = ItemTipUtility.mainTipData.operates; var guid = ItemTipUtility.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("ItemTipWin", operates[i], guid); } else { button.SetActive(false); } } } } } }