using System.Collections.Generic; using ET; using FairyGUI; using UI.Task; using UnityEngine; namespace GFGGame { public class BattlePassTaskView : BaseWindow { private UI_BattlePassRewardUI _ui; private List _rewardCfgs; private int maxShowIndex; public override void Dispose() { maxShowIndex = 0; if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_BattlePassRewardUI.PACKAGE_NAME; _ui = UI_BattlePassRewardUI.Create(); viewCom = _ui.target; isfullScreen = true; clickBlankToClose = false; _ui.m_btnOpen.onClick.Add(OnBtnOpenClick); _ui.m_btnBuyLevel.onClick.Add(OnBtnBuyLevel); _ui.m_btnGetAll.onClick.Add(OnBtnGetAllClick); _ui.m_RewardList.itemRenderer = ListBoxRewardItemRender; _ui.m_SpecialReward.m_RewardList.itemRenderer = SpecialRewardRender; } protected override void OnShown() { base.OnShown(); //获取通行证奖励配置 var seasonId = BattlePassTaskDataManager.Instance.GetSeasonId(); _rewardCfgs = new List(BattlePassCfgArray.Instance.GetCfgsByid(seasonId)); //去掉第一个为0的配置 _ui.m_RewardList.numItems = _rewardCfgs.Count - 1; SetSeasonLeftTime(); SetBattlePassLevel(); SetOpenBattlePassBtnStatus(); FreshSpecialReward(); } //开启通行证 private void OnBtnOpenClick(EventContext context) { ViewManager.Show(null, new object[] { typeof(BattlePassTaskView).FullName, null }); } private void OnBtnBuyLevel(EventContext context) { ViewManager.Show(null, new object[] { typeof(BattlePassTaskView).FullName, null }); } //领取奖励 private void OnBtnGetClick(EventContext context) { //TODO Log.Debug("领取奖励"); } //继续领取 private void OnBtnContinueClick(EventContext context) { //TODO Log.Debug("继续领取"); } //领取全部奖励 private void OnBtnGetAllClick(EventContext context) { //TODO Log.Debug("领取全部奖励"); } //前往 private void OnBtnGoClick(EventContext context) { Hide(); var btnGo = context.sender as GObject; if (btnGo == null) return; ViewManager.Show($"GFGGame.{btnGo.data}", null, new[] { typeof(TaskView).FullName, viewData }, true); } private void ListBoxRewardItemRender(int index, GObject obj) { var item = UI_BattlePassRewardItem.Proxy(obj); var level = index + 1; //这里跳过为0的第一个配置 var battlePassCfg = _rewardCfgs[level]; //设置等级 item.m_Level.text = battlePassCfg.level.ToString(); //设置奖励 var bonusNormalArr = battlePassCfg.bonusNormalArr; if (bonusNormalArr != null && bonusNormalArr.Length > 0) { var itemCfg = ItemCfgArray.Instance.GetCfg(bonusNormalArr[0][0]); if (itemCfg != null) { item.m_NormalReward.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(itemCfg.res); item.m_NormalReward.m_num.text = bonusNormalArr[0][1].ToString(); } } if (item.m_RewardList.data == null) { item.m_RewardList.itemRenderer = SpecialRewardRender; } item.m_RewardList.data = battlePassCfg.bonusSpecialArr; item.m_RewardList.numItems = battlePassCfg.bonusSpecialArr.Length; //获取玩家当前的通行证等级 var state = BattlePassTaskDataManager.Instance.GetRewardState(level); //设置按钮状态 SetBtnState(item, battlePassCfg.id, state); item.target.data = battlePassCfg; maxShowIndex = Mathf.Max(maxShowIndex, level); UI_BattlePassRewardItem.ProxyEnd(); } //SpecialRewardRender private static void SpecialRewardRender(int index, GObject obj) { var item = UI_RewardIconYellow.Proxy(obj); var parentData = (int[][])obj.parent.data; // if (!(obj.parent.data is int[][] parentData)) // { // UI_RewardIconYellow.ClearProxy(); // return; // } var itemInfo = parentData[index]; var itemId = itemInfo[0]; var num = itemInfo[1]; var itemCfg = ItemCfgArray.Instance.GetCfg(itemId); if (itemCfg != null) { item.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(itemCfg.res); item.m_num.text = num.ToString(); } UI_RewardIconYellow.ProxyEnd(); } //根据状态设置按钮 private void SetBtnState(UI_BattlePassRewardItem item, int id, int state) { item.m_c1.selectedIndex = state; if (item.m_GetRewardBt.data == null) { item.m_GetRewardBt.onClick.Add(OnBtnGetClick); } item.m_GetRewardBt.data = id; //继续领取 if (item.m_ContinueBt.data == null) { item.m_ContinueBt.onClick.Add(OnBtnContinueClick); } //前往 if (item.m_ComeBt.data == null) { item.m_ComeBt.onClick.Add(OnBtnGoClick); } item.m_GetRewardBt.data = id; item.m_GetRewardBt.data = id; } //设置赛季剩余时间 private void SetSeasonLeftTime() { //获取赛季结束时间 Timers.inst.Add(1, 0, UpdateTime); } //UpdateTime private void UpdateTime(object param) { var seasonEndTime = BattlePassTaskDataManager.Instance.GetSeasonEndTime(); var leftTime = seasonEndTime - TimeHelper.ServerNow(); if (leftTime <= 0) { Timers.inst.Remove(UpdateTime); return; } _ui.m_LeftTime.text = TimeUtil.FormattingTime(TimeHelper.ServerNow(), seasonEndTime); } private void SetBattlePassLevel() { //获取玩家当前的通行证等级 var dataManager = BattlePassTaskDataManager.Instance; var battlePassLevel = dataManager.GetBattlePassLevel(); var uiExpProcess = _ui.m_LevelProcess; uiExpProcess.m_Level.text = battlePassLevel.ToString(); //获取当前等级的经验 var battlePassCfg = BattlePassCfgArray.Instance.GetCfgByidAndlevel(dataManager.GetSeasonId(), dataManager.GetBattlePassLevel()); uiExpProcess.target.max = battlePassCfg.value; uiExpProcess.target.value = dataManager.GetBattlePassExp(); uiExpProcess.m_NumProcess.SetVar("value", dataManager.GetBattlePassExp().ToString()) .SetVar("maxValue", battlePassCfg.value.ToString()).FlushVars(); } private void SetOpenBattlePassBtnStatus() { //通行证是否购买 var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy(); _ui.m_c1.selectedIndex = isBuy ? 0 : 1; } //刷新特别大奖展示 private void FreshSpecialReward() { var battlePassCfg = BattlePassTaskDataManager.Instance.GetSpecialCfg(maxShowIndex); var uiBattlePassReward = _ui.m_SpecialReward; if (battlePassCfg == null) { uiBattlePassReward.target.visible = false; return; } uiBattlePassReward.target.visible = true; uiBattlePassReward.m_Level.text = battlePassCfg.level.ToString(); //设置奖励 var bonusNormalArr = battlePassCfg.bonusNormalArr; if (bonusNormalArr != null && bonusNormalArr.Length > 0) { var itemCfg = ItemCfgArray.Instance.GetCfg(bonusNormalArr[0][0]); if (itemCfg != null) { uiBattlePassReward.m_NormalReward.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(itemCfg.res); uiBattlePassReward.m_NormalReward.m_num.text = bonusNormalArr[0][1].ToString(); } } uiBattlePassReward.m_RewardList.data = battlePassCfg.bonusSpecialArr; uiBattlePassReward.m_RewardList.numItems = battlePassCfg.bonusSpecialArr.Length; } } }