ActivityThemeLuckyBoxBonusView.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using cfg.GfgCfg;
  4. using ET;
  5. using FairyGUI;
  6. using UI.ActivityThemeLuckyBox;
  7. using UnityEngine;
  8. namespace GFGGame
  9. {
  10. public class ActivityThemeLuckyBoxBonusView : BaseWindow
  11. {
  12. private UI_ActivityThemeLuckyBoxBonusUI _ui;
  13. private List<ActivityLuckybonusCfg> _bonueCfgs = new List<ActivityLuckybonusCfg>();
  14. private int _typeId = 0; //活动类型id
  15. private int _activityId = 0; //活动id
  16. private long _allPlayTimes = 0;
  17. private Dictionary<int, int> _bonusState = new Dictionary<int, int>();
  18. public override void Dispose()
  19. {
  20. if (_ui != null)
  21. {
  22. _ui.Dispose();
  23. _ui = null;
  24. }
  25. base.Dispose();
  26. }
  27. protected override void OnInit()
  28. {
  29. base.OnInit();
  30. packageName = UI_ActivityThemeLuckyBoxBonusUI.PACKAGE_NAME;
  31. _ui = UI_ActivityThemeLuckyBoxBonusUI.Create();
  32. this.viewCom = _ui.target;
  33. this.viewCom.Center();
  34. this.modal = true;
  35. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  36. _ui.m_list.itemRenderer = RenderListItem;
  37. _ui.m_btnClose.onClick.Add(Hide);
  38. }
  39. protected override void AddEventListener()
  40. {
  41. base.AddEventListener();
  42. }
  43. protected override void OnShown()
  44. {
  45. base.OnShown();
  46. _typeId = (int)this.viewData;
  47. if (_typeId == ConstLimitTimeActivityType.ActLimitLuckyBox)
  48. {
  49. _activityId = ActivityDataManager.Instance.actLuckyBoxId;
  50. _allPlayTimes = ActivityDataManager.Instance.allPlayTimes;
  51. _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState;
  52. }
  53. else if (_typeId == ConstLimitTimeActivityType.ActLimitTsy)
  54. {
  55. _activityId = ActivityDataManager.Instance.actLimitTsyId;
  56. _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;
  57. _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState;
  58. }
  59. else if (_typeId == ConstLimitTimeActivityType.ActLimitStlyc)
  60. {
  61. _activityId = ActivityDataManager.Instance.actLimitStlycId;
  62. _allPlayTimes = ActivityDataManager.Instance.allLimitStlycTimes;
  63. _bonusState = ActivityDataManager.Instance.limitStlycActBonusState;
  64. }
  65. _bonueCfgs = CommonDataManager.Tables.TblIActivityLuckybonusCfg.DataList.Where(a => a.Id == _activityId)
  66. .ToList();
  67. _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs, _typeId);
  68. _ui.m_list.numItems = _bonueCfgs.Count;
  69. _ui.m_list.scrollPane.ScrollTop();
  70. }
  71. protected override void OnHide()
  72. {
  73. base.OnHide();
  74. }
  75. protected override void RemoveEventListener()
  76. {
  77. base.RemoveEventListener();
  78. }
  79. private void RenderListItem(int index, GObject obj)
  80. {
  81. ActivityOpenCfg activityOpenCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(_activityId);
  82. UI_ListItem item = UI_ListItem.Proxy(obj);
  83. item.m_txtTitle.text = string.Format("{0}限定摘星{1}次({2}/{3})", activityOpenCfg.ThemeName,
  84. _bonueCfgs[index].Num, _allPlayTimes, _bonueCfgs[index].Num);
  85. if (item.m_listRewards.data == null)
  86. {
  87. item.m_listRewards.itemRenderer = RenderListRewardItem;
  88. }
  89. item.m_listRewards.data = _bonueCfgs[index].Bonus.ToGfgGameItemParam();
  90. item.m_listRewards.numItems = _bonueCfgs[index].Bonus.Count;
  91. int key = _bonueCfgs[index].Num;
  92. int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0;
  93. bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[index].Num;
  94. item.m_c1.selectedIndex = canGet ? 1 : state;
  95. if (item.m_btnGet.data == null)
  96. {
  97. item.m_btnGet.onClick.Add(OnBtnGetClick);
  98. }
  99. item.m_btnGet.data = key;
  100. UI_ListItem.ProxyEnd();
  101. }
  102. private void RenderListRewardItem(int index, GObject obj)
  103. {
  104. var bonus = (List<ItemParamProto>)obj.parent.data;
  105. ItemData reward = ItemUtil.createItemData(bonus[index]);
  106. if (obj.data == null)
  107. {
  108. obj.data = new ItemView(obj as GComponent);
  109. }
  110. (obj.data as ItemView).SetData(reward);
  111. (obj.data as ItemView).ChangeTxtCountStyle();
  112. }
  113. private async void OnBtnGetClick(EventContext context)
  114. {
  115. GObject obj = context.sender as GObject;
  116. int key = (int)obj.data;
  117. bool result = await ActivitySProxy.ReqGetTimeLimitLuckyBoxBonus(_activityId, key);
  118. if (result)
  119. {
  120. _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs, _typeId);
  121. _ui.m_list.numItems = _bonueCfgs.Count;
  122. }
  123. }
  124. }
  125. }