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 _studioData; private LimitCfg _studioCfg; 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(); UpdateView(); } private void UpdateView() { _limitId = (int)this.viewData; _studioData = RoleLimitDataManager.GetLimitData(_limitId); _studioCfg = LimitCfgArray.Instance.GetCfg(_limitId); _ui.m_c1.selectedIndex = 0; _ui.m_txtNum.text = string.Format("(今天已兑换{0}/{1}次)", _studioData.BuyTimes, _studioCfg.buyNum); ItemUtil.UpdateItemNumAndNeedNum(_ui.m_comCostItem, _studioCfg.itemID, _studioCfg.itemNum, true); if (_studioCfg.moneyId <= 0) return; _ui.m_c1.selectedIndex = 1; LimitCfgArray.Instance.GetMoneyIdAndNum(_studioCfg.id, _studioData.BuyTimes, 1, out int moneyId, out int moneyNum); ItemUtil.UpdateItemNumAndNeedNum(_ui.m_comCostCurrent, _studioCfg.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 (_studioData.BuyTimes == _studioCfg.buyNum) { PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限", MessageType.ERR); return; } LimitCfgArray.Instance.GetMoneyIdAndNum(_studioCfg.id, _studioData.BuyTimes, 1, out int moneyId, out int moneyNum); if (type == BUY_TYPE_0 && ItemDataManager.GetItemNum(_studioCfg.itemID) < _studioCfg.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 (_studioData.BuyTimes == _studioCfg.buyNum) { PromptController.Instance.ShowFloatTextPrompt("今日购买次数已达上限", MessageType.ERR); this.Hide(); } } } }