UIActivityDailyRechargeROBTView.lua 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. local UIActivityDailyRechargeROBTView = require("UIActivity/UIActivityDailyRechargeROBTView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. function UIActivityDailyRechargeROBTView:OnAwake(data)
  4. self.controller = require("UIActivity/UIActivityDailyRechargeROBTCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIActivityDailyRechargeROBTView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change,self,self.ActivityRefresh)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Day_Change,self,self.ActivityRefresh)
  11. end
  12. function UIActivityDailyRechargeROBTView:FillContent(data, uiBase)
  13. self.uiBase = uiBase
  14. local gameObject = self.uiBase:GetRoot()
  15. if gameObject ~= nil then
  16. self.gameObject = gameObject
  17. self.transform = gameObject.transform
  18. end
  19. self:InitGenerate(self.transform, data)
  20. self:Init()
  21. end
  22. function UIActivityDailyRechargeROBTView:Init()
  23. local data = self.controller:GetData()
  24. CommonUtil.LoadIcon(self, data.pageBg, function (sprite)
  25. self.bg.image.sprite = sprite
  26. end)
  27. self.controller:InitData()
  28. self.taskListScroll.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
  29. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  30. end, nil)
  31. local curIdx = self.controller:GetCurIdx()
  32. local toggleGroup = self.toggleGroup.toggleGroup
  33. local oldAllowSwitchOff = toggleGroup.allowSwitchOff
  34. toggleGroup.allowSwitchOff = true
  35. self.dailyTaskToggle.toggle.isOn = (curIdx == 1)
  36. self.weekTaskToggle.toggle.isOn = (curIdx == 2)
  37. toggleGroup.allowSwitchOff = oldAllowSwitchOff
  38. end
  39. function UIActivityDailyRechargeROBTView:RemoveEventListener()
  40. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  41. end
  42. function UIActivityDailyRechargeROBTView:AddUIEventListener()
  43. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
  44. self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickCloseBtn)
  45. self.uiBase:AddToggleUniqueEventListener(self.dailyTaskToggle.toggle, self, self.OnClickTaskToggle, 1)
  46. self.uiBase:AddToggleUniqueEventListener(self.weekTaskToggle.toggle, self, self.OnClickTaskToggle, 2)
  47. end
  48. function UIActivityDailyRechargeROBTView:OnHide()
  49. end
  50. function UIActivityDailyRechargeROBTView:OnShow(data)
  51. self.controller:SetData(data)
  52. end
  53. function UIActivityDailyRechargeROBTView:OnClose()
  54. end
  55. function UIActivityDailyRechargeROBTView:OnDispose()
  56. self.taskListScroll.loopListView:Dispose()
  57. self:StopRemainTime()
  58. self.controller:OnDispose()
  59. end
  60. function UIActivityDailyRechargeROBTView:OnPageInEnd()
  61. self:RefreshShow()
  62. self:RefreshToggleRP()
  63. end
  64. function UIActivityDailyRechargeROBTView:OnClickCloseBtn()
  65. ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
  66. if self.uiBase.MSourceUIID > 0 then
  67. ManagerContainer.LuaUIMgr:Open(self.uiBase.MSourceUIID)
  68. end
  69. end
  70. function UIActivityDailyRechargeROBTView:OnClickTaskGoto(_,param)
  71. local taskData = param[0]
  72. local parentPageId = 0
  73. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMainCity1) then
  74. parentPageId = Enum.UIPageName.UIMainCity1
  75. elseif ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIBattle) then
  76. parentPageId = Enum.UIPageName.UIBattle
  77. end
  78. if taskData:CanJump() then
  79. if taskData.gotoPageId > 0 then
  80. if taskData.gotoPageId == Enum.UIPageName.UIDojo2D then
  81. ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIDojo2D, parentPageId)
  82. elseif taskData.gotoPageId == Enum.UIPageName.UIRuneShopBT then
  83. ManagerContainer.LuaUIMgr:Open(taskData.gotoPageId,{Enum.RuneShopType.Gifts, Enum.RuneShopSubType.Gold},parentPageId)
  84. else
  85. ManagerContainer.LuaUIMgr:Open(taskData.gotoPageId,nil,parentPageId)
  86. end
  87. local uiData = ManagerContainer.CfgMgr:GetUIData(taskData.gotoPageId)
  88. if uiData.type == 0 then
  89. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, uiData.mainViewType)
  90. end
  91. self:UIClose()
  92. end
  93. else
  94. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("DailyTaskText")
  95. end
  96. end
  97. function UIActivityDailyRechargeROBTView:OnClickTaskGet(_,param)
  98. local taskId = param[0]
  99. ManagerContainer.DataMgr.ActsDataMgr:SendGetActivityRewardReq(self.controller:GetActivityActId(),taskId)
  100. end
  101. function UIActivityDailyRechargeROBTView:OnClickTaskToggle(toggle, params, isOn)
  102. if not isOn then
  103. return
  104. end
  105. local idx = params[0]
  106. if self.controller:ChangeCurIdx(idx) then
  107. self:RefreshShow()
  108. end
  109. end
  110. function UIActivityDailyRechargeROBTView:RefreshToggleRP()
  111. self.weekTaskToggle.redpoint:SetActive(self.controller:HasWeekTaskRP())
  112. self.dailyTaskToggle.redpoint:SetActive(self.controller:HasDayTaskRP())
  113. end
  114. function UIActivityDailyRechargeROBTView:ActivityRefresh(actid)
  115. if self.controller:GetActivityActId() == actid then
  116. self:RefreshShow()
  117. self:RefreshToggleRP()
  118. end
  119. end
  120. function UIActivityDailyRechargeROBTView:RefreshShow()
  121. local taskList = self.controller:GetTaskList()
  122. local length = taskList ~= nil and #taskList or 0
  123. self.taskListScroll.loopListView:SetListItemCount(0)
  124. self.taskListScroll.loopListView:SetListItemCount(length)
  125. self:RefreshRemainTime()
  126. end
  127. function UIActivityDailyRechargeROBTView:RefreshRemainTime()
  128. if not self.controller then
  129. self:StopRemainTime()
  130. return
  131. end
  132. local remainTime = self.controller:GetRemainTime()
  133. if not self.updateTimer then
  134. self.updateTimer = Timer.New(slot(self.RefreshRemainTime, self), 60, -1)
  135. self.updateTimer.time = remainTime % 60
  136. end
  137. if not self.updateTimer.running then
  138. self.updateTimer:Start()
  139. end
  140. self.leftTimeNode.leftTimeTxt.text.text = DateTimeUtil.convertSeconds2TimeStr1(remainTime, true, false, false)
  141. end
  142. function UIActivityDailyRechargeROBTView:StopRemainTime()
  143. if self.updateTimer then
  144. self.updateTimer:Stop()
  145. self.updateTimer = nil
  146. end
  147. end
  148. function UIActivityDailyRechargeROBTView:GetItemByRowColumn(gridView, itemIndex, row, column)
  149. local taskData = self.controller:GetTaskListDataByIdx(itemIndex + 1)
  150. if not taskData then
  151. return nil
  152. end
  153. local item = gridView:NewListViewItem('TaskItemActivity')
  154. local taskLua = CommonUtil.BindGridViewItem2Lua(self, 'TaskItemActivity', item.gameObject)
  155. taskLua.taskName.text.text = I18N.T(taskData.name)
  156. taskLua.progress.scrollbar.size = taskData.progress and taskData.progress or (taskData.doNum / taskData.finishedNum)
  157. taskLua.doNumTxt.text.text = taskData.doNum .. "/" .. taskData.finishedNum
  158. self:ShowTaskReward(taskLua,taskData:ShowRewards())
  159. self.uiBase:AddButtonUniqueEventListener(taskLua.gotoBtn.button,self, self.OnClickTaskGoto, taskData)
  160. self.uiBase:AddButtonUniqueEventListener(taskLua.getBtn.button,self, self.OnClickTaskGet, taskData.taskId)
  161. if taskData:IsOutofDate() then
  162. if not taskData:IsFinished() then
  163. taskLua.gotoBtn:SetActive(false)
  164. taskLua.getBtn:SetActive(false)
  165. taskLua.sealBtn:SetActive(false)
  166. taskLua.endBtn:SetActive(true)
  167. elseif not taskData:IsGotReward() then
  168. taskLua.gotoBtn:SetActive(false)
  169. taskLua.getBtn:SetActive(true)
  170. taskLua.sealBtn:SetActive(false)
  171. taskLua.endBtn:SetActive(false)
  172. else
  173. taskLua.gotoBtn:SetActive(false)
  174. taskLua.getBtn:SetActive(false)
  175. taskLua.sealBtn:SetActive(true)
  176. taskLua.endBtn:SetActive(false)
  177. end
  178. else
  179. if not taskData:IsFinished() then
  180. taskLua.gotoBtn:SetActive(true)
  181. taskLua.getBtn:SetActive(false)
  182. taskLua.sealBtn:SetActive(false)
  183. taskLua.endBtn:SetActive(false)
  184. elseif not taskData:IsGotReward() then
  185. taskLua.gotoBtn:SetActive(false)
  186. taskLua.getBtn:SetActive(true)
  187. taskLua.sealBtn:SetActive(false)
  188. taskLua.endBtn:SetActive(false)
  189. else
  190. taskLua.gotoBtn:SetActive(false)
  191. taskLua.getBtn:SetActive(false)
  192. taskLua.sealBtn:SetActive(true)
  193. taskLua.endBtn:SetActive(false)
  194. end
  195. end
  196. return item
  197. end
  198. function UIActivityDailyRechargeROBTView:ShowTaskReward(taskLua,rewards)
  199. if taskLua.itemList == nil then
  200. taskLua.itemList = {}
  201. taskLua.itemList[#taskLua.itemList+1] = taskLua.iconSmallItem
  202. end
  203. for i = 1, #taskLua.itemList do
  204. taskLua.itemList[i]:SetActive(false)
  205. end
  206. if rewards == nil then
  207. return
  208. end
  209. for i = 1, #rewards do
  210. local itemLua = taskLua.itemList[i]
  211. if itemLua == nil then
  212. local itemGo = UnityEngine.GameObject.Instantiate(taskLua.iconSmallItem.gameObject)
  213. itemLua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", itemGo)
  214. itemLua.prefabName = "IconItem"
  215. itemGo.name = "IconItem"
  216. itemLua.transform:SetParent(taskLua.rewardsNode.transform)
  217. itemLua.transform.localScale = Vector3(1,1,1)
  218. itemLua.rectTransform.anchoredPosition3D = Vector3(0,0,0)
  219. taskLua.itemList[#taskLua.itemList+1] = itemLua
  220. end
  221. local rewardData = {cfgId = rewards[i][1], num = rewards[i][2] }
  222. IconItemCtr:SetData(self, itemLua, rewardData, nil, self, self.OnClickItem)
  223. itemLua:SetActive(true)
  224. end
  225. end
  226. function UIActivityDailyRechargeROBTView:OnClickItem(btn,params)
  227. local logicData = params[0]
  228. ManagerContainer.LuaUIMgr:OpenTips(logicData)
  229. end
  230. return UIActivityDailyRechargeROBTView