using System; using System.Collections.Generic; using ET; using FairyGUI; using UI.MiniGame; using UnityEngine; using System.Reflection; 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}星通关",MiniGameArray.Instance.GetCfg(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].bonusStar3Arr.Length; 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}首次通关", MiniGameArray.Instance.GetCfg(gameList[2]).typeName,index+1); item.m_rewardList.itemRenderer = RenditemReward; //读表 //var reward; item.m_getBtn.m_c1.selectedIndex = Merge2048GameInfo[index].FirstPassRewardStatus; item.m_rewardList.data = gameList[2]; item.m_rewardList.numItems = Merge2048GameDate[index].bonusWinFirstArr.Length; 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[0].id); rewardList.Add(Merge2048GameDate[0].type); rewardList.Add(1); rewardList.Add(3 - index); rewardList.Add(Merge2048GameInfo[index].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.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar1Arr[0][0]).res); item.m_Num.text = CardGameDate[0].bonusStar1Arr[0][1].ToString(); break; case 2: item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar2Arr[0][0]).res); item.m_Num.text = CardGameDate[0].bonusStar2Arr[0][1].ToString(); break; case 3: item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar3Arr[0][0]).res); item.m_Num.text = CardGameDate[0].bonusStar3Arr[0][1].ToString(); break; default: break; } } else { switch (num) { case 1: item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[0].bonusWinFirstArr[0][0]).res); item.m_Num.text = Merge2048GameDate[0].bonusWinFirstArr[0][1].ToString(); break; case 2: item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[1].bonusWinFirstArr[0][0]).res); item.m_Num.text = Merge2048GameDate[1].bonusWinFirstArr[0][1].ToString(); break; case 3: item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[2].bonusWinFirstArr[0][0]).res); item.m_Num.text = Merge2048GameDate[2].bonusWinFirstArr[0][1].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; } private void GetGameArray(int i,int j,int index) { switch(i) { case 1: CardGameDate = CardGameArray.Instance.GetCfgsBytypeAndsubType(i,j); break; case 2: Merge2048GameDate = Merge2048GameArray.Instance.GetCfgsBytypeAndsubType(i,j); break; default: break; } } } }