ChallengeRewardView.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. using System;
  2. using System.Collections.Generic;
  3. using ET;
  4. using FairyGUI;
  5. using UI.MiniGame;
  6. using UnityEngine;
  7. using System.Reflection;
  8. namespace GFGGame
  9. {
  10. public class ChallengeRewardView : BaseWindow
  11. {
  12. private UI_ChallengeRewardsUI _ui;
  13. private List<int> gameList = new List<int>();
  14. private MiniGame[] gameNameDate;
  15. //由于每个游戏都有一个表
  16. private List<CardGame> CardGameDate;
  17. private List<GameInfoProto> CardGameInfo = new List<GameInfoProto>();
  18. private List<Merge2048Game> Merge2048GameDate;
  19. private List<GameInfoProto> Merge2048GameInfo = new List<GameInfoProto>();
  20. private int oneNumItems;
  21. private int twoNumItems;
  22. public override void Dispose()
  23. {
  24. if (_ui != null)
  25. {
  26. _ui.Dispose();
  27. _ui = null;
  28. }
  29. base.Dispose();
  30. }
  31. protected override void OnInit()
  32. {
  33. base.OnInit();
  34. packageName = UI_ChallengeRewardsUI.PACKAGE_NAME;
  35. _ui = UI_ChallengeRewardsUI.Create();
  36. this.viewCom = _ui.target;
  37. isfullScreen = true;
  38. _ui.m_exit.onClick.Add(Hide);
  39. _ui.m_reward.m_rewardOneList.itemRenderer = RenderListOne;
  40. _ui.m_reward.m_rewardTwoList.itemRenderer = RenderListTwo;
  41. }
  42. protected override void OnShown()
  43. {
  44. base.OnShown();
  45. gameList = (this.viewData as object[])[0] as List<int>;
  46. for(int i= 0;i< gameList.Count; i+=2)
  47. {
  48. GetGameArray(gameList[i], gameList[i + 1],i);
  49. }
  50. switch(gameList.Count)
  51. {
  52. case 0:
  53. oneNumItems = 0;
  54. break;
  55. case 2:
  56. oneNumItems = 3;
  57. break;
  58. case 4:
  59. oneNumItems = 3;
  60. break;
  61. default:
  62. oneNumItems = 0;
  63. break;
  64. }
  65. foreach(GameInfoProto t in MiniGameDateManager.Instance.gameinfoList)
  66. {
  67. if(t.GameType == 1)
  68. {
  69. CardGameInfo.Add(t);
  70. }
  71. if(t.GameType == 2)
  72. {
  73. Merge2048GameInfo.Add(t);
  74. }
  75. }
  76. _ui.m_reward.m_rewardOneList.numItems = CardGameInfo[0].StarRewardStatus.Count == 0? CardGameInfo.Count : CardGameInfo[0].StarRewardStatus.Count;
  77. oneNumItems = CardGameInfo[0].StarRewardStatus.Count == 0 ? CardGameInfo.Count : CardGameInfo[0].StarRewardStatus.Count;
  78. _ui.m_reward.m_rewardTwoList.numItems = Merge2048GameInfo[0].StarRewardStatus.Count == 0 ? Merge2048GameInfo.Count : Merge2048GameInfo[0].StarRewardStatus.Count;
  79. twoNumItems = Merge2048GameInfo[0].StarRewardStatus.Count == 0 ? Merge2048GameInfo.Count : Merge2048GameInfo[0].StarRewardStatus.Count;
  80. }
  81. protected override void OnHide()
  82. {
  83. CardGameInfo.Clear();
  84. Merge2048GameInfo.Clear();
  85. base.OnHide();
  86. }
  87. private void RenderListOne(int index ,GObject obj)
  88. {
  89. UI_ChallengeRewardItemUI item = UI_ChallengeRewardItemUI.Proxy(obj);
  90. int starNum = 3 - index;
  91. item.m_rewardDesc.text = string.Format("{0}游戏首次{1}星通关",MiniGameArray.Instance.GetCfg(gameList[0]).typeName, starNum);
  92. item.m_rewardList.itemRenderer = RenditemReward;
  93. //var reward;
  94. item.m_getBtn.m_c1.selectedIndex = MiniGameDateManager.Instance.gameinfoList[0].StarRewardStatus[2 - index];
  95. item.m_rewardList.data = gameList[0];
  96. item.m_rewardList.numItems = CardGameDate[0].bonusStar3Arr.Length;
  97. if (item.m_getBtn.target.data == null)
  98. {
  99. item.m_getBtn.target.onClick.Add(OnBtnGoClick);
  100. }
  101. List<int> rewardList = new List<int>();
  102. List<int> starList = new List<int>() { CardGameDate[0].timeStar3, CardGameDate[0].timeStar2, CardGameDate[0].timeStar1 };
  103. rewardList.Add(CardGameDate[0].id);
  104. rewardList.Add(CardGameDate[0].type);
  105. rewardList.Add(1);
  106. rewardList.Add(3-index);
  107. rewardList.Add(MiniGameDateManager.Instance.gameinfoList[0].StarRewardStatus[2 - index]);
  108. item.m_getBtn.target.data = rewardList;
  109. UI_ChallengeRewardItemUI.ProxyEnd();
  110. }
  111. private void RenderListTwo(int index , GObject obj)
  112. {
  113. UI_ChallengeRewardItemUI item = UI_ChallengeRewardItemUI.Proxy(obj);
  114. int starNum = 3 - index;
  115. item.m_rewardDesc.text = string.Format("{0}游戏关卡{1}首次通关", MiniGameArray.Instance.GetCfg(gameList[2]).typeName,index+1);
  116. item.m_rewardList.itemRenderer = RenditemReward;
  117. //读表
  118. //var reward;
  119. item.m_getBtn.m_c1.selectedIndex = Merge2048GameInfo[index].FirstPassRewardStatus;
  120. item.m_rewardList.data = gameList[2];
  121. item.m_rewardList.numItems = Merge2048GameDate[index].bonusWinFirstArr.Length;
  122. if (item.m_getBtn.target.data == null)
  123. {
  124. item.m_getBtn.target.onClick.Add(OnBtnGoClick);
  125. }
  126. List<int> rewardList = new List<int>();
  127. List<int> starList = new List<int>() { Merge2048GameDate[0].timeStar3, Merge2048GameDate[0].timeStar2, Merge2048GameDate[0].timeStar1 };
  128. rewardList.Add(Merge2048GameDate[0].id);
  129. rewardList.Add(Merge2048GameDate[0].type);
  130. rewardList.Add(1);
  131. rewardList.Add(3 - index);
  132. rewardList.Add(Merge2048GameInfo[index].FirstPassRewardStatus);
  133. item.m_getBtn.target.data = rewardList;
  134. UI_ChallengeRewardItemUI.ProxyEnd();
  135. }
  136. private void RenditemReward(int index, GObject obj)
  137. {
  138. UI_ChallengeRewardItem item = UI_ChallengeRewardItem.Proxy(obj);
  139. int num = 3 - index;
  140. if((int)item.target.parent.data == 1)
  141. {
  142. switch (num)
  143. {
  144. case 1:
  145. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar1Arr[0][0]).res);
  146. item.m_Num.text = CardGameDate[0].bonusStar1Arr[0][1].ToString();
  147. break;
  148. case 2:
  149. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar2Arr[0][0]).res);
  150. item.m_Num.text = CardGameDate[0].bonusStar2Arr[0][1].ToString();
  151. break;
  152. case 3:
  153. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(CardGameDate[0].bonusStar3Arr[0][0]).res);
  154. item.m_Num.text = CardGameDate[0].bonusStar3Arr[0][1].ToString();
  155. break;
  156. default:
  157. break;
  158. }
  159. }
  160. else
  161. {
  162. switch (num)
  163. {
  164. case 1:
  165. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[0].bonusWinFirstArr[0][0]).res);
  166. item.m_Num.text = Merge2048GameDate[0].bonusWinFirstArr[0][1].ToString();
  167. break;
  168. case 2:
  169. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[1].bonusWinFirstArr[0][0]).res);
  170. item.m_Num.text = Merge2048GameDate[1].bonusWinFirstArr[0][1].ToString();
  171. break;
  172. case 3:
  173. item.m_icon.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(Merge2048GameDate[2].bonusWinFirstArr[0][0]).res);
  174. item.m_Num.text = Merge2048GameDate[2].bonusWinFirstArr[0][1].ToString();
  175. break;
  176. default:
  177. break;
  178. }
  179. }
  180. UI_ChallengeRewardItem.ProxyEnd();
  181. }
  182. private async void OnBtnGoClick(EventContext context)
  183. {
  184. if (!(context.sender is GObject btnGet)) return;
  185. List<int> itemList = btnGet.data as List<int>;
  186. if (itemList[4] != 1)
  187. {
  188. return;
  189. }
  190. if (itemList[1] == 1)
  191. {
  192. var result = await MiniGameProxy.ReqGetReward(itemList[0], itemList[1], itemList[2], itemList[3]);
  193. if (!result) return;
  194. }
  195. else if(itemList[1] == 2)
  196. {
  197. var result = await MiniGameProxy.ReqGetFirstPassReward(itemList[0], itemList[1], itemList[2]);
  198. if (!result) return;
  199. }
  200. _ui.m_reward.m_rewardOneList.numItems = oneNumItems;
  201. _ui.m_reward.m_rewardTwoList.numItems = twoNumItems;
  202. }
  203. private void GetGameArray(int i,int j,int index)
  204. {
  205. switch(i)
  206. {
  207. case 1:
  208. CardGameDate = CardGameArray.Instance.GetCfgsBytypeAndsubType(i,j);
  209. break;
  210. case 2:
  211. Merge2048GameDate = Merge2048GameArray.Instance.GetCfgsBytypeAndsubType(i,j);
  212. break;
  213. default:
  214. break;
  215. }
  216. }
  217. }
  218. }