using System; using System.Collections.Generic; using System.Linq; using ET; using FairyGUI; using UI.MiniGame; using UnityEngine; using System.Reflection; using cfg.GfgCfg; namespace GFGGame { public class ChallengeRewardView : BaseWindow { private UI_ChallengeRewardsUI _ui; private List gameList = new List(); //private MiniGame[] gameNameDate; //由于每个游戏都有一个表 private List CardGameDate; private List CardGameInfo = new List(); private List Merge2048GameDate; private List Merge2048GameInfo = new List(); private int oneNumItems; private int twoNumItems; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ChallengeRewardsUI.PACKAGE_NAME; _ui = UI_ChallengeRewardsUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_exit.onClick.Add(Hide); _ui.m_reward.m_rewardOneList.itemRenderer = RenderListOne; _ui.m_reward.m_rewardTwoList.itemRenderer = RenderListTwo; } protected override void OnShown() { base.OnShown(); gameList = (this.viewData as object[])[0] as List; for (int i = 0; i < gameList.Count; i += 2) { GetGameArray(gameList[i], gameList[i + 1], i); } switch (gameList.Count) { case 0: oneNumItems = 0; break; case 2: oneNumItems = 3; break; case 4: oneNumItems = 3; break; default: oneNumItems = 0; break; } foreach (GameInfoProto t in MiniGameDateManager.Instance.gameinfoList) { if (t.GameType == 1) { CardGameInfo.Add(t); } if (t.GameType == 2) { Merge2048GameInfo.Add(t); } } _ui.m_reward.m_rewardOneList.numItems = CardGameInfo[0].StarRewardStatus.Count == 0 ? CardGameInfo.Count : CardGameInfo[0].StarRewardStatus.Count; oneNumItems = CardGameInfo[0].StarRewardStatus.Count == 0 ? CardGameInfo.Count : CardGameInfo[0].StarRewardStatus.Count; _ui.m_reward.m_rewardTwoList.numItems = Merge2048GameInfo[0].StarRewardStatus.Count == 0 ? Merge2048GameInfo.Count : Merge2048GameInfo[0].StarRewardStatus.Count; twoNumItems = Merge2048GameInfo[0].StarRewardStatus.Count == 0 ? Merge2048GameInfo.Count : Merge2048GameInfo[0].StarRewardStatus.Count; } protected override void OnHide() { CardGameInfo.Clear(); Merge2048GameInfo.Clear(); base.OnHide(); } private void RenderListOne(int index, GObject obj) { UI_ChallengeRewardItemUI item = UI_ChallengeRewardItemUI.Proxy(obj); int starNum = 3 - index; item.m_rewardDesc.text = string.Format("{0}首次{1}星通关", CommonDataManager.Tables.TblMiniGameCfg.GetOrDefault(gameList[0]).TypeName, starNum); item.m_rewardList.itemRenderer = RenditemReward; //var reward; item.m_getBtn.m_c1.selectedIndex = MiniGameDateManager.Instance.gameinfoList[0].StarRewardStatus[2 - index]; item.m_rewardList.data = gameList[0]; item.m_rewardList.numItems = CardGameDate[0].BonusStar3.Count; if (item.m_getBtn.target.data == null) { item.m_getBtn.target.onClick.Add(OnBtnGoClick); } List rewardList = new List(); List starList = new List() { CardGameDate[0].TimeStar3, CardGameDate[0].TimeStar2, CardGameDate[0].TimeStar1 }; rewardList.Add(CardGameDate[0].Id); rewardList.Add(CardGameDate[0].Type); rewardList.Add(1); rewardList.Add(3 - index); rewardList.Add(MiniGameDateManager.Instance.gameinfoList[0].StarRewardStatus[2 - index]); item.m_getBtn.target.data = rewardList; UI_ChallengeRewardItemUI.ProxyEnd(); } private void RenderListTwo(int index, GObject obj) { UI_ChallengeRewardItemUI item = UI_ChallengeRewardItemUI.Proxy(obj); int starNum = 3 - index; item.m_rewardDesc.text = string.Format("{0}关卡{1}首次通关", CommonDataManager.Tables.TblMiniGameCfg.GetOrDefault(gameList[2]).TypeName, index + 1); item.m_rewardList.itemRenderer = RenditemReward; //读表 //var reward; item.m_getBtn.m_c1.selectedIndex = MiniGameDateManager.Instance.gameinfoList[index + CardGameInfo.Count] .FirstPassRewardStatus; item.m_rewardList.data = gameList[2]; item.m_rewardList.numItems = Merge2048GameDate[index].BonusWinFirst.Count; if (item.m_getBtn.target.data == null) { item.m_getBtn.target.onClick.Add(OnBtnGoClick); } List rewardList = new List(); List starList = new List() { Merge2048GameDate[0].TimeStar3, Merge2048GameDate[0].TimeStar2, Merge2048GameDate[0].TimeStar1 }; rewardList.Add(Merge2048GameDate[index].Id); rewardList.Add(Merge2048GameDate[index].Type); rewardList.Add(1); rewardList.Add(3 - index); rewardList.Add(MiniGameDateManager.Instance.gameinfoList[index + 1].FirstPassRewardStatus); item.m_getBtn.target.data = rewardList; UI_ChallengeRewardItemUI.ProxyEnd(); } private void RenditemReward(int index, GObject obj) { UI_ChallengeRewardItem item = UI_ChallengeRewardItem.Proxy(obj); int num = 3 - index; if ((int)item.target.parent.data == 1) { switch (num) { case 1: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg.GetOrDefault(CardGameDate[0].BonusStar1[0].ItemId).Res, "png"); item.m_Num.text = CardGameDate[0].BonusStar1[0].Count.ToString(); break; case 2: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg.GetOrDefault(CardGameDate[0].BonusStar2[0].ItemId).Res, "png"); item.m_Num.text = CardGameDate[0].BonusStar2[0].Count.ToString(); break; case 3: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg.GetOrDefault(CardGameDate[0].BonusStar3[0].ItemId).Res, "png"); item.m_Num.text = CardGameDate[0].BonusStar3[0].Count.ToString(); break; default: break; } } else { switch (num) { case 1: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg .GetOrDefault(Merge2048GameDate[0].BonusWinFirst[0].ItemId).Res, "png"); item.m_Num.text = Merge2048GameDate[0].BonusWinFirst[0].Count.ToString(); break; case 2: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg .GetOrDefault(Merge2048GameDate[1].BonusWinFirst[0].ItemId).Res, "png"); item.m_Num.text = Merge2048GameDate[1].BonusWinFirst[0].Count.ToString(); break; case 3: item.m_icon.url = ResPathUtil.GetIconPath( CommonDataManager.Tables.TblItemCfg .GetOrDefault(Merge2048GameDate[2].BonusWinFirst[0].ItemId).Res, "png"); item.m_Num.text = Merge2048GameDate[2].BonusWinFirst[0].Count.ToString(); break; default: break; } } UI_ChallengeRewardItem.ProxyEnd(); } private async void OnBtnGoClick(EventContext context) { if (!(context.sender is GObject btnGet)) return; List itemList = btnGet.data as List; if (itemList[4] != 1) { return; } if (itemList[1] == 1) { var result = await MiniGameProxy.ReqGetReward(itemList[0], itemList[1], itemList[2], itemList[3]); if (!result) return; } else if (itemList[1] == 2) { var result = await MiniGameProxy.ReqGetFirstPassReward(itemList[0], itemList[1], itemList[2]); if (!result) return; } _ui.m_reward.m_rewardOneList.numItems = oneNumItems; _ui.m_reward.m_rewardTwoList.numItems = twoNumItems; EventAgent.DispatchEvent(ConstMessage.MINI_GAME_UPDATE); } private void GetGameArray(int i, int j, int index) { switch (i) { case 1: CardGameDate = CommonDataManager.Tables.TblCardGameCfg.DataList .Where(a => a.Type == i && a.SubType == j).ToList(); break; case 2: Merge2048GameDate = CommonDataManager.Tables.TblMerge2048GameCfg.DataList .Where(a => a.Type == i && a.SubType == j).ToList(); break; default: break; } } } }