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; private EffectUI _effectUI1; private EffectUI _effectUI2; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = 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); }); _ui.m_btnBack.onClick.Add(this.Hide); AddEffect(); } 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_txtNum1.visible = false; _ui.m_txtNum0.text = string.Format("(今天已兑换{0}/{1}次)", _limitData.BuyTimes, _limitCfg.buyNum); _ui.m_loaBg.url = ResPathUtil.GetCommonGameResPath("ty_tc_s"); List privilegeCfgs = MonthlyCardPrivilegeCfgArray.Instance.GetCfgsByparamsType(1); for (int i = 0; i < privilegeCfgs.Count; i++) { if (privilegeCfgs[i].paramsArr[0] == _limitId) { _ui.m_txtNum1.visible = true; string str0 = privilegeCfgs[i].value1Arr[0] > 0 ? string.Format("灵犀卡+{0}次", privilegeCfgs[i].value1Arr[0]) : ""; string str1 = privilegeCfgs[i].value2Arr[0] > 0 ? string.Format("璇玑卡+{0}次", privilegeCfgs[i].value2Arr[0]) : ""; _ui.m_txtNum0.text = string.Format("1.{0}{1}{2}", str0, !string.IsNullOrEmpty(str0) && !string.IsNullOrEmpty(str1) ? "," : "", str1); _ui.m_txtNum1.text = string.Format("2.道具兑换(今天已兑换{0}/{1}次)", _limitData.BuyTimes, _limitCfg.buyNum); break; } } 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(); } private void AddEffect() { //边框左上角特效 _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_LeftTopEffect, "ui_Activity", "Com_window_L_up"); //边框右下角特效 _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_RightDownEffect, "ui_Activity", "Com_window_R_Down"); } 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) { object[] sourceDatas = new object[]{ _limitCfg.itemID, new object[] { typeof(BagView).FullName, this.viewData } }; GoodsItemTipsController.ShowItemTips(_limitCfg.itemID, sourceDatas); 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(); } } } }