UIActivityFirstRechargeView.lua 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. local UIActivityFirstRechargeView = require("UIActivity/UIActivityFirstRechargeView_Generate")
  2. local GiftType = {
  3. First = 1, -- 首充
  4. Hundred = 2, -- 百元
  5. }
  6. function UIActivityFirstRechargeView:OnAwake(data)
  7. self.controller = require("UIActivity/UIActivityFirstRechargeCtr"):new()
  8. self.controller:Init(self)
  9. self.controller:SetData(data)
  10. end
  11. function UIActivityFirstRechargeView:AddEventListener()
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PAY_TOTAL_RECHARGE_CHANGED, self, self.OnPayTotalRechargeChanged)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change, self, self.OnActivityDataChanged)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_FirstRecharge_Change, self, self.OnActivityFirstRechargeChanged)
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_CLOSE_COMPELETED, self, self.OnUICloseCompleted)
  16. end
  17. function UIActivityFirstRechargeView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UIActivityFirstRechargeView:Init()
  28. self.controller:InitData()
  29. self.firstRechargeItem.rewards.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  30. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  31. end, nil)
  32. self:RefreshView()
  33. end
  34. function UIActivityFirstRechargeView:RemoveEventListener()
  35. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  36. end
  37. function UIActivityFirstRechargeView:AddUIEventListener()
  38. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
  39. self.uiBase:AddButtonUniqueEventListener(self.backBtn.button, self, self.OnClickCloseBtn)
  40. self.uiBase:AddToggleUniqueEventListener(self.firstToggle.toggle, self, self.OnClickToggle, GiftType.First)
  41. self.uiBase:AddToggleUniqueEventListener(self.hundredToggle.toggle, self, self.OnClickToggle, GiftType.Hundred)
  42. self.uiBase:AddButtonUniqueEventListener(self.btnRecharge.button, self, self.OnClickRechargeBtn)
  43. self.uiBase:AddButtonUniqueEventListener(self.btnReceive.button, self, self.OnClickReceiveBtn)
  44. self.uiBase:AddToggleUniqueEventListener(self.toggle1.toggle, self, self.OnClickDayToggle, 1)
  45. self.uiBase:AddToggleUniqueEventListener(self.toggle2.toggle, self, self.OnClickDayToggle, 2)
  46. self.uiBase:AddToggleUniqueEventListener(self.toggle3.toggle, self, self.OnClickDayToggle, 3)
  47. end
  48. function UIActivityFirstRechargeView:OnHide()
  49. end
  50. function UIActivityFirstRechargeView:OnShow(data)
  51. self.controller:SetData(data)
  52. end
  53. function UIActivityFirstRechargeView:OnClose()
  54. end
  55. function UIActivityFirstRechargeView:OnDispose()
  56. if self.firstRechargeItem and self.firstRechargeItem.rewards and self.firstRechargeItem.rewards.loopGridView then
  57. self.firstRechargeItem.rewards.loopGridView:Dispose()
  58. end
  59. self.controller:OnDispose()
  60. end
  61. function UIActivityFirstRechargeView:OnPayTotalRechargeChanged()
  62. self:RefreshRewardState()
  63. end
  64. function UIActivityFirstRechargeView:OnActivityDataChanged()
  65. local giftType = self.controller:GetGiftType()
  66. if giftType == GiftType.Hundred then
  67. self:RefreshRewards()
  68. self:RefreshRewardState()
  69. end
  70. end
  71. function UIActivityFirstRechargeView:OnActivityFirstRechargeChanged()
  72. local giftType = self.controller:GetGiftType()
  73. if giftType == GiftType.First then
  74. self:RefreshRewards()
  75. self:RefreshRewardState()
  76. end
  77. end
  78. function UIActivityFirstRechargeView:OnUICloseCompleted(owner)
  79. if owner.uiData.id ~= Enum.UIPageName.UIRuneShopBT then return end
  80. if ManagerContainer.LuaUIMgr:PageInHideStack(self.uiBase) then
  81. ManagerContainer.LuaUIMgr:Show(Enum.UIPageName.UIActivityFirstRecharge)
  82. end
  83. end
  84. function UIActivityFirstRechargeView:OnClickCloseBtn()
  85. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  86. end
  87. function UIActivityFirstRechargeView:OnClickToggle(tog, params, b)
  88. if not b then return end
  89. local giftType = params[0]
  90. if self.controller:ChangeGiftType(giftType) then
  91. self:RefreshBanner()
  92. self:RefreshRewards()
  93. self:RefreshRewardState()
  94. end
  95. end
  96. function UIActivityFirstRechargeView:OnClickRechargeBtn()
  97. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBT, {Enum.RuneShopType.Gifts, Enum.RuneShopSubType.Gold})
  98. ManagerContainer.LuaUIMgr:Hide(Enum.UIPageName.UIActivityFirstRecharge)
  99. end
  100. function UIActivityFirstRechargeView:OnClickReceiveBtn()
  101. self.controller:SendGetReward()
  102. end
  103. function UIActivityFirstRechargeView:OnClickDayToggle(tog, params, b)
  104. if not params then return end
  105. local dayIdx = params[0]
  106. if not b then
  107. local lastDayIdx = self.controller:GetDayIdx()
  108. if dayIdx == lastDayIdx then
  109. tog.isOn = true
  110. end
  111. return
  112. end
  113. if self.controller:ChangeDayIdx(dayIdx) then
  114. self:RefreshRewards()
  115. self:RefreshRewardState()
  116. end
  117. end
  118. function UIActivityFirstRechargeView:RefreshView()
  119. self:RefreshToggleGroup()
  120. self:RefreshBanner()
  121. self:RefreshRewards()
  122. self:RefreshRewardState()
  123. end
  124. function UIActivityFirstRechargeView:RefreshToggleGroup()
  125. local giftType = self.controller:GetGiftType()
  126. local toggleGroup = self.toggleGroup.toggleGroup
  127. local oldAllowSwitchOff = toggleGroup.allowSwitchOff
  128. toggleGroup.allowSwitchOff = true
  129. self.firstToggle.toggle.isOn = (giftType == GiftType.First)
  130. self.hundredToggle.toggle.isOn = (giftType == GiftType.Hundred)
  131. toggleGroup.allowSwitchOff = oldAllowSwitchOff
  132. end
  133. function UIActivityFirstRechargeView:RefreshBanner()
  134. local giftType = self.controller:GetGiftType()
  135. self.banner1:SetActive(giftType == GiftType.First)
  136. self.banner2:SetActive(giftType == GiftType.Hundred)
  137. end
  138. function UIActivityFirstRechargeView:RefreshRewards()
  139. local cfgData = self.controller:GetCfgData()
  140. if not cfgData then
  141. self.firstRechargeItem:SetActive(false)
  142. return
  143. end
  144. local idx = self.controller:GetDayIdx()
  145. self.toggle1.toggle.isOn = (idx == 1)
  146. self.toggle2.toggle.isOn = (idx == 2)
  147. self.toggle3.toggle.isOn = (idx == 3)
  148. if not idx then
  149. self.firstRechargeItem:SetActive(false)
  150. return
  151. end
  152. self:RefreshFirstRechargeItem(self.firstRechargeItem, idx, cfgData['Reward' .. tostring(idx)], cfgData['Value' .. tostring(idx)])
  153. end
  154. function UIActivityFirstRechargeView:RefreshRewardState()
  155. local idx = self.controller:GetDayIdx()
  156. local rewardState = nil
  157. if idx then
  158. rewardState = self.controller:GetRewardStateByDay(idx)
  159. else
  160. rewardState = Enum.ActivityRewardState.NotGot
  161. end
  162. local curNum, targetNum = self.controller:GetTargetRechargeInfo()
  163. if targetNum > 0 then
  164. self.dscTxt.text.text = string.formatbykey('DscRecharge02', tostring(curNum), tostring(targetNum))
  165. self.btnRecharge:SetActive(true)
  166. self.btnReceive:SetActive(false)
  167. self.btnWating:SetActive(false)
  168. self.labelReceived:SetActive(false)
  169. else
  170. self.dscTxt.text.text = ''
  171. self.btnRecharge:SetActive(false)
  172. if rewardState == Enum.ActivityRewardState.Got then
  173. self.btnReceive:SetActive(true)
  174. self.btnWating:SetActive(false)
  175. self.labelReceived:SetActive(false)
  176. elseif rewardState == Enum.ActivityRewardState.GotAndHas then
  177. self.btnReceive:SetActive(false)
  178. self.btnWating:SetActive(false)
  179. self.labelReceived:SetActive(true)
  180. else
  181. self.btnReceive:SetActive(false)
  182. self.btnWating:SetActive(true)
  183. self.labelReceived:SetActive(false)
  184. end
  185. end
  186. end
  187. function UIActivityFirstRechargeView:RefreshFirstRechargeItem(itemLua, day, rewards, value)
  188. itemLua.textDays.text.text = string.formatbykey('TitleFirstRechargeRewards', tostring(day))
  189. itemLua.numValue.text.text = tostring(value)
  190. self.firstRechargeItem.rewards.loopGridView:RefreshListByIndex(rewards and #rewards or 0, 0)
  191. local rewardState = self.controller:GetRewardStateByDay(day)
  192. itemLua.mask:SetActive(rewardState == Enum.ActivityRewardState.GotAndHas)
  193. itemLua.received:SetActive(rewardState == Enum.ActivityRewardState.GotAndHas)
  194. itemLua.available:SetActive(rewardState == Enum.ActivityRewardState.Got)
  195. local _, targetNum = self.controller:GetTargetRechargeInfo()
  196. if targetNum > 0 then
  197. itemLua.mask:SetActive(false)
  198. itemLua.received:SetActive(false)
  199. itemLua.available:SetActive(false)
  200. itemLua.wating:SetActive(false)
  201. else
  202. if rewardState == Enum.ActivityRewardState.Got then
  203. itemLua.mask:SetActive(false)
  204. itemLua.received:SetActive(false)
  205. itemLua.available:SetActive(true)
  206. itemLua.wating:SetActive(false)
  207. elseif rewardState == Enum.ActivityRewardState.GotAndHas then
  208. itemLua.mask:SetActive(true)
  209. itemLua.received:SetActive(true)
  210. itemLua.available:SetActive(false)
  211. itemLua.wating:SetActive(false)
  212. else
  213. itemLua.mask:SetActive(false)
  214. itemLua.received:SetActive(false)
  215. itemLua.available:SetActive(false)
  216. itemLua.wating:SetActive(true)
  217. end
  218. end
  219. end
  220. function UIActivityFirstRechargeView:GetItemByRowColumn(gridView, itemIndex, row, column)
  221. local cfgData = self.controller:GetCfgData()
  222. if not cfgData then
  223. return nil
  224. end
  225. local idx = self.controller:GetDayIdx()
  226. if not idx then
  227. return nil
  228. end
  229. local showData = cfgData['Reward' .. tostring(idx)]
  230. local item = nil
  231. if showData then
  232. local itemData = showData[itemIndex + 1]
  233. if itemData then
  234. item = gridView:NewListViewItem('IconSmallItem')
  235. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', item.gameObject)
  236. CommonUtil.UpdateItemPrefab(self, itemlua, {cfgId = itemData[1], num = itemData[2]}, Enum.ItemIEnterType.Bag, self, self.ShowItemTips)
  237. end
  238. end
  239. return item
  240. end
  241. function UIActivityFirstRechargeView:ShowItemTips(button, params)
  242. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  243. end
  244. return UIActivityFirstRechargeView