ChallengeRewardView.cs 11 KB

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