using System.Collections.Generic; using FairyGUI; using UI.CommonGame; using UI.Studio; namespace GFGGame { public class StudioBuyNumView : BaseWindow { private UI_StudioBuyNumUI _ui; private int _limitId; private RoleLimitData _limitData; private LimitCfg _limitCfg; private int _index; private const int BUY_TYPE_0 = 0; private const int BUY_TYPE_1 = 1; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_StudioBuyNumUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnExchange.onClick.Add(() => { OnClickBtnBuy(BUY_TYPE_0); }); _ui.m_btnBuy.onClick.Add(() => { OnClickBtnBuy(BUY_TYPE_1); }); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, OnLimitChanged); } protected override void OnShown() { base.OnShown(); _limitId = (int)this.viewData; _limitData = RoleLimitDataManager.GetLimitData(_limitId); _limitCfg = LimitCfgArray.Instance.GetCfg(_limitId); UpdateView(); } private void UpdateView() { _ui.m_c1.selectedIndex = 0; _ui.m_txtNum.text = string.Format("(今天已兑换{0}/{1}次)", _limitData.BuyTimes, _limitCfg.buyNum); ItemUtil.UpdateItemNumAndNeedNum(_ui.m_comCostItem, _limitCfg.itemID, _limitCfg.itemNum, true); if (_limitCfg.moneyId <= 0) return; _ui.m_c1.selectedIndex = 1; LimitCfgArray.Instance.GetMoneyIdAndNum(_limitCfg.id, _limitData.BuyTimes, 1, out int moneyId, out int moneyNum); ItemUtil.UpdateItemNumAndNeedNum(_ui.m_comCostCurrent, _limitCfg.moneyId, moneyNum, true); } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NOTICE_LIMIT_CHANGED, OnLimitChanged); } private void OnClickBtnBuy(int type) { if (_limitData.BuyTimes == _limitCfg.buyNum) { PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限", MessageType.ERR); return; } LimitCfgArray.Instance.GetMoneyIdAndNum(_limitCfg.id, _limitData.BuyTimes, 1, out int moneyId, out int moneyNum); if (type == BUY_TYPE_0 && ItemDataManager.GetItemNum(_limitCfg.itemID) < _limitCfg.itemNum || type == BUY_TYPE_1 && ItemDataManager.GetItemNum(moneyId) < moneyNum) { PromptController.Instance.ShowFloatTextPrompt("道具不足", MessageType.ERR); return; } RoleLimitSProxy.ReqBuyLimitPlayTimes(_limitId, type, 1).Coroutine(); } private void OnLimitChanged(EventContext context = null) { if((int)context.data != _limitId) { return; } PromptController.Instance.ShowFloatTextPrompt("购买成功", MessageType.SUCCESS); UpdateView(); if (_limitData.BuyTimes == _limitCfg.buyNum) { PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限", MessageType.ERR); this.Hide(); } } } }