//-------------------------------------------------------- // [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] OperateButton[] 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() { } protected override void OnAfterOpen() { packModel.refreshItemDayUseCountEvent += OnUseItem; } protected override void OnPreClose() { StopAllCoroutines(); packModel.refreshItemDayUseCountEvent += OnUseItem; } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); DisplayBaseInfo(); DisplayItemDescription(); DisplayItemUseState(); DisplayAuctionInfo(); DisplayOperateButton(); } #endregion private void DisplayBaseInfo() { var data = EquipTipUtility.mainTipData; m_BaseInfoWidget.Display(data.baseInfo); } private void DisplayItemDescription() { var data = EquipTipUtility.mainTipData; m_DescriptionWidget.Display(data.baseInfo.itemId); } private void OnUseItem(int itemId) { if (itemId == EquipTipUtility.mainTipData.itemId) { DisplayItemUseState(); } } private void DisplayItemUseState() { var data = EquipTipUtility.mainTipData; var count = packModel.GetItemUsedTimesToday(data.itemId); var config = ItemConfig.Get(data.itemId); m_DescriptionWidget.DisplayUseState(count, config.MaxSkillCnt); } private void DisplayAuctionInfo() { var data = EquipTipUtility.mainTipData; m_AuctionWidget.gameObject.SetActive(data.baseInfo.isAuction); if (data.baseInfo.isAuction) { var overdueTime = DateTime.Now.AddSeconds((double)data.baseInfo.auctionSurplusTime); m_AuctionWidget.Display(overdueTime); } } 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); } } } } [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.split: this.m_Title.text = "拆分"; break; case ItemOperateType.inlay: this.m_Title.text = "镶嵌"; break; default: this.m_Title.text = ""; break; } m_Button.SetListener(() => { WindowCenter.Instance.Close(); EquipTipUtility.Operate(operateType, this.guid); }); } } } }