ActivityThemeLuckyBoxBonusView.cs 5.1 KB

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