using System; using System.Collections.Generic; using System.Linq; using ET; using FairyGUI; using UI.Store; using UI.CommonGame; using UnityEngine; using static GFGGame.ShopSProxy; namespace GFGGame { class StoreSummerGiftView : BaseWindow { private UI_StoreSummerGiftUI _ui; private List _rewardCfgs; private ActivityOpenCfg activityOpenCfg; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_StoreSummerGiftUI.PACKAGE_NAME; _ui = UI_StoreSummerGiftUI.Create(); viewCom = _ui.target; isfullScreen = true; clickBlankToClose = false; _ui.m_btnOpen.onClick.Add(OnBtnOpenClick); _ui.m_btnGetAll.onClick.Add(OnBtnGetAllClick); _ui.m_RewardList.itemRenderer = ListBoxRewardItemRender; //_ui.m_tip.onClick.Add(RuleController.ShowRuleView); //_ui.m_tip.data = 300012; } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(UpdateTime); } protected override void OnShown() { base.OnShown(); activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(ActivityAfuGiftDataManager.Instance.SummerActivityID); FreshReward(); Timers.inst.AddUpdate(UpdateTime); } protected override void AddEventListener() { base.AddEventListener(); //监听通行证等级变化 EventAgent.AddEventListener(ConstMessage.SHOP_BUY, SetBuyBtnStatus); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, FreshReward); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, SetBuyBtnStatus); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, FreshReward); } //购买礼包 private async void OnBtnOpenClick(EventContext context) { if(GetBuyStatus()) { return; } await ReqShopBuy(activityOpenCfg.paramsArr[0]); await ActivityAfuGiftSProxy.GetSummerGiftInfo(); _ui.m_RewardList.numItems = _rewardCfgs.Count; } //领取全部奖励 private async void OnBtnGetAllClick(EventContext context) { if(!ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState()) { return; } await ActivityAfuGiftSProxy.ReqGetSummerGiftAllReward(); _ui.m_RewardList.numItems = _rewardCfgs.Count; } private void ListBoxRewardItemRender(int index, GObject obj) { var item = UI_BrocadeWeavRewardItem.Proxy(obj); var level = index; var battlePassCfg = _rewardCfgs[level]; item.m_Level.text = (index + 1).ToString()+ "天"; //设置奖励 var bonusNormalArr = battlePassCfg.bonusFreeArr; if (bonusNormalArr != null && bonusNormalArr.Length > 0) { item.m_NormalReward.visible = true; ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(bonusNormalArr[0][0]); UI_ComItem comItem = UI_ComItem.Proxy(item.m_NormalReward); comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal); comItem.m_txtCount.text = bonusNormalArr[0][1].ToString(); comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1; if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 0) { comItem.m_Lock.selectedIndex = 2; } else { comItem.m_Lock.selectedIndex = 0; } if (index <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0].Count) { if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 2) { comItem.m_grpGot.visible = true; } else { comItem.m_grpGot.visible = false; } } else { comItem.m_grpGot.visible = false; } if (comItem.target.data == null) { comItem.target.onClick.Add(OnItemClick); } comItem.target.data = new List() { 0, index, bonusNormalArr[0][0] }; if (index <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0].Count) { RedDotController.Instance.SetComRedDot(item.m_NormalReward, ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 1, "", -12, 24); } UI_ComItem.ProxyEnd(); } else { item.m_NormalReward.data = null; item.m_NormalReward.visible = false; } if (item.m_RewardList.data == null) { item.m_RewardList.itemRenderer = SpecialRewardRender; } item.m_RewardList.data = _rewardCfgs[index]; item.m_RewardList.numItems = battlePassCfg.bonusPayArr.Length; UI_BrocadeWeavRewardItem.ProxyEnd(); } private void SpecialRewardRender(int index, GObject obj) { var keyValuePair = (CoolDownCfg)obj.parent.data; var itemInfo = keyValuePair.bonusPayArr; int day = keyValuePair.num - 1; ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(itemInfo[index][0]); UI_ComItem comItem = UI_ComItem.Proxy(obj); comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal); comItem.m_txtCount.text = itemInfo[index][1].ToString(); comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1; if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 0) { comItem.m_Lock.selectedIndex = 1; } else { comItem.m_Lock.selectedIndex = 0; } if (day <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1].Count) { if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 2) { comItem.m_grpGot.visible = true; } else { comItem.m_grpGot.visible = false; } } if (comItem.target.data == null) { comItem.target.onClick.Add(OnItemClick); } comItem.target.data = new List() {1, day, itemInfo[index][0] }; if (day <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1].Count) { RedDotController.Instance.SetComRedDot(comItem.target, ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 1, "", -12, 24); } UI_ComItem.ProxyEnd(); } private void OnItemClick(EventContext eventContext) { GObject sender = eventContext.sender as GObject; List info = (List)sender.data; if(info[1] <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[info[0]].Count) { if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[info[0]][info[1]] == 1) { if(info[0] == 0) { ActivityAfuGiftSProxy.ReqGetSummerGiftReward(false,info[1] + 1).Coroutine(); } else { ActivityAfuGiftSProxy.ReqGetSummerGiftReward(true,info[1] + 1).Coroutine(); } _ui.m_RewardList.numItems = _rewardCfgs.Count; RedDotController.Instance.SetComRedDot(_ui.m_btnGetAll, ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState(), ""); } else { GoodsItemTipsController.ShowItemTips(info[2]); } } } private void UpdateTime(object param) { long curTime = TimeHelper.ServerNow(); var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(ActivityAfuGiftDataManager.Instance.SummerActivityID); if (activityInfo != null) { long endTime = activityInfo.EndTime; _ui.m_LeftTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); } else { _ui.m_LeftTime.text = ""; } } private void FreshReward() { //刷新奖励列表 _rewardCfgs = CoolDownCfgArray.Instance.dataArray.ToList(); //去掉第一个为0的配置 _ui.m_RewardList.numItems = _rewardCfgs.Count; SetBuyBtnStatus(); } private void SetBuyBtnStatus(EventContext context = null) { //通行证是否购买 ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(activityOpenCfg.paramsArr[0]); int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id); if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum) { _ui.m_btnOpen.text = "¥ 68 解 锁"; _ui.m_btnGetAll.visible = false; } else { _ui.m_btnOpen.text = "已解锁"; _ui.m_btnGetAll.visible = true; } RedDotController.Instance.SetComRedDot(_ui.m_btnGetAll, ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState(), ""); } private bool GetBuyStatus() { //通行证是否购买 ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(activityOpenCfg.paramsArr[0]); int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id); if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum) { return false; } else { return true; } } } }