UIActivityKingTaskView.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. local UIActivityKingTaskView = require("UIActivity/UIActivityKingTaskView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. function UIActivityKingTaskView:OnAwake(data)
  4. self.controller = require("UIActivity/UIActivityKingTaskCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIActivityKingTaskView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change,self,self.ActivityRefresh);
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Day_Change,self,self.RefreshShow)
  12. end
  13. function UIActivityKingTaskView:FillContent(data, uiBase)
  14. self.uiBase = uiBase
  15. local gameObject = self.uiBase:GetRoot()
  16. if gameObject ~= nil then
  17. self.gameObject = gameObject
  18. self.transform = gameObject.transform
  19. end
  20. self:InitGenerate(self.transform, data)
  21. self. d = Enum.TimeString.d
  22. self. h = Enum.TimeString.h
  23. self. m = Enum.TimeString.m
  24. self. s = Enum.TimeString.s
  25. self:Init()
  26. end
  27. function UIActivityKingTaskView:Init()
  28. local data = self.controller:GetData()
  29. --LogError("============Init====="..Inspect(data))
  30. CommonUtil.LoadIcon(self, data.pageBg, function (sprite)
  31. self.bg.image.sprite = sprite
  32. end)
  33. self.pageToggleData = {}
  34. self.controller:InitData()
  35. self:InitGrid()
  36. end
  37. function UIActivityKingTaskView:OnPageInEnd()
  38. self.super.OnPageInEnd(self)
  39. self.isActiveToggle1 = self:GetIsActiveToggle1()
  40. self.isActiveToggle2 = self:GetIsActiveToggle2()
  41. --LogError(Inspect(self.isActiveToggle1).."===="..Inspect(self.isActiveToggle2))
  42. self.growthTaskToggle:SetActive(not self.isActiveToggle1)
  43. self.dailyTaskToggle.label.text.text = self.isActiveToggle1 and I18N.SetLanguageValue("BtnPaymentToday") or I18N.SetLanguageValue("BtnActivityToday")
  44. self.dailyTaskToggle:SetActive(not self.isActiveToggle2)
  45. self.leftTimeNode.icon:SetActive(not self.isActiveToggle1)
  46. local index = self.isActiveToggle1 and 2 or 1
  47. CommonUtil.CreateToggleMouduleOnlyBtns(self, self.pageToggleData, self.toggleGroup, index, self.OnValueChangedToggle, self, true)
  48. self:InitUpdate()
  49. self:RefreshRemainTime()
  50. self:RefreshToggleRP()
  51. end
  52. function UIActivityKingTaskView:RefreshToggleRP()
  53. self.growthTaskToggle.redpoint:SetActive(self.controller:HasGrowTaskRP())
  54. self.dailyTaskToggle.redpoint:SetActive(self.controller:HasDayTaskRP())
  55. end
  56. function UIActivityKingTaskView:GetIsActiveToggle1()
  57. local actId = self.controller:GetActivityActId()
  58. local cfgdata = GlobalConfig.Instance:GetConfigStrValue(330)
  59. local actIdList = CommonUtil.DeserializeGlobalStrToNumberTable(cfgdata)
  60. local ret = false
  61. for i = 1, #actIdList do
  62. if actId == actIdList[i] then
  63. ret = true
  64. end
  65. end
  66. local hasdata = #(self.controller.taskList) ~= 0
  67. if ret and hasdata then
  68. ret = false
  69. elseif not ret and not hasdata then
  70. ret = true
  71. end
  72. return ret
  73. end
  74. function UIActivityKingTaskView:GetIsActiveToggle2()
  75. local actId = self.controller:GetActivityActId()
  76. local cfgdata = GlobalConfig.Instance:GetConfigStrValue(341)
  77. local actIdList = CommonUtil.DeserializeGlobalStrToNumberTable(cfgdata)
  78. local ret = false
  79. for i = 1, #actIdList do
  80. if actId == actIdList[i] then
  81. ret = true
  82. end
  83. end
  84. local hasdata = #(self.controller.dayTaskList) ~= 0
  85. if ret and hasdata then
  86. ret = false
  87. elseif not ret and not hasdata then
  88. ret = true
  89. end
  90. return ret
  91. end
  92. function UIActivityKingTaskView:InitUpdate()
  93. if not self.updateTimer then
  94. self.updateTimer = Timer.New(slot(self.RefreshRemainTime, self), 60, -1)
  95. if not self.updateTimer.running then
  96. self.updateTimer:Start()
  97. end
  98. end
  99. end
  100. function UIActivityKingTaskView:ConvertTime(time)
  101. local day,hour,minute,second = ConvertTimeForm(time)
  102. local timeStr = ""
  103. if day > 0 then
  104. timeStr = day .. self.d..hour .. self.h .. minute .. self.m
  105. else
  106. if hour > 0 then
  107. timeStr = hour .. self.h .. minute .. self.m
  108. else
  109. if minute == 0 then
  110. minute = 1
  111. end
  112. timeStr = minute .. self.m
  113. end
  114. end
  115. return timeStr
  116. end
  117. function UIActivityKingTaskView:RefreshRemainTime()
  118. if not self.controller then
  119. return false
  120. end
  121. local leftTime = self.controller:GetRemainTime()
  122. if leftTime <= 0 then
  123. self.TimeTxt.text.text = "0"
  124. self:OnClickCloseBtn()
  125. return false
  126. end
  127. self.TimeTxt.text.text = self:ConvertTime(leftTime)
  128. self.leftTimeNode.leftTimeTxt.text.text = self.isActiveToggle1 and I18N.SetLanguageValue("BtnPaymentToday1") or self:ConvertTime(self.controller:GetDayRemainTime())
  129. return true
  130. end
  131. function UIActivityKingTaskView:InitGrid()
  132. self.taskListScroll.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
  133. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  134. end, nil)
  135. end
  136. function UIActivityKingTaskView:ActivityRefresh(actid)
  137. if self.controller:GetActivityActId() == actid then
  138. self:RefreshShow()
  139. end
  140. end
  141. function UIActivityKingTaskView:RefreshShow()
  142. self:OnValueChangedToggle()
  143. self:RefreshToggleRP()
  144. self:RefreshRemainTime()
  145. end
  146. function UIActivityKingTaskView:OnValueChangedToggle()
  147. self.leftTimeNode:SetActive(self.pageToggleData.toggleDefaultIndex == 2)
  148. if self.pageToggleData.toggleDefaultIndex == 1 then
  149. local taskList = self.controller:GetTaskList()
  150. local length = taskList ~= nil and #taskList or 0
  151. self.taskListScroll.loopListView:SetListItemCount(length, true)
  152. elseif self.pageToggleData.toggleDefaultIndex == 2 then
  153. local dayTaskList = self.controller:GetDayTaskList()
  154. local length = dayTaskList ~= nil and #dayTaskList or 0
  155. self.taskListScroll.loopListView:SetListItemCount(length, true)
  156. self.leftTimeNode.leftTimeTxt.text.text = self.isActiveToggle1 and I18N.SetLanguageValue("BtnPaymentToday") or self:ConvertTime(self.controller:GetDayRemainTime())
  157. end
  158. self.taskListScroll.loopListView:RefreshAllShownItem()
  159. end
  160. function UIActivityKingTaskView:GetItemByRowColumn(gridView, itemIndex, row, column)
  161. local taskData = self.pageToggleData.toggleDefaultIndex == 1
  162. and self.controller:GetTaskListDataByIdx(itemIndex + 1)
  163. or self.controller:GetDayTaskListDataByIdx(itemIndex + 1)
  164. if not taskData then
  165. return nil
  166. end
  167. local item = gridView:NewListViewItem('TaskItemActivity')
  168. local taskLua = CommonUtil.BindGridViewItem2Lua(self, 'TaskItemActivity', item.gameObject)
  169. --taskLua.num.text.text = itemIndex + 1
  170. --LogError("============== taskName = "..taskData.name)
  171. --LogError("============== taskNum = "..taskData.doNum)
  172. taskLua.taskName.text.text = I18N.T(taskData.name)
  173. taskLua.progress.scrollbar.size = taskData.progress and taskData.progress or (taskData.doNum / taskData.finishedNum)
  174. taskLua.doNumTxt.text.text = taskData.doNum .. "/" .. taskData.finishedNum
  175. self:ShowTaskReward(taskLua,taskData:ShowRewards())
  176. self.uiBase:AddButtonUniqueEventListener(taskLua.gotoBtn.button,self, self.OnClickTaskGoto, taskData)
  177. self.uiBase:AddButtonUniqueEventListener(taskLua.getBtn.button,self, self.OnClickTaskGet, taskData.taskId)
  178. if taskData:IsOutofDate() then
  179. if not taskData:IsFinished() then
  180. taskLua.gotoBtn:SetActive(false)
  181. taskLua.getBtn:SetActive(false)
  182. taskLua.sealBtn:SetActive(false)
  183. taskLua.endBtn:SetActive(true)
  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. else
  196. if not taskData:IsFinished() then
  197. taskLua.gotoBtn:SetActive(true)
  198. taskLua.getBtn:SetActive(false)
  199. taskLua.sealBtn:SetActive(false)
  200. taskLua.endBtn:SetActive(false)
  201. elseif not taskData:IsGotReward() then
  202. taskLua.gotoBtn:SetActive(false)
  203. taskLua.getBtn:SetActive(true)
  204. taskLua.sealBtn:SetActive(false)
  205. taskLua.endBtn:SetActive(false)
  206. else
  207. taskLua.gotoBtn:SetActive(false)
  208. taskLua.getBtn:SetActive(false)
  209. taskLua.sealBtn:SetActive(true)
  210. taskLua.endBtn:SetActive(false)
  211. end
  212. end
  213. return item
  214. end
  215. function UIActivityKingTaskView:ShowTaskReward(taskLua,rewards)
  216. if taskLua.itemList == nil then
  217. taskLua.itemList = {}
  218. taskLua.itemList[#taskLua.itemList+1] = taskLua.iconSmallItem
  219. end
  220. for i = 1, #taskLua.itemList do
  221. taskLua.itemList[i]:SetActive(false)
  222. end
  223. if rewards == nil then
  224. return
  225. end
  226. for i = 1, #rewards do
  227. local itemLua = taskLua.itemList[i]
  228. if itemLua == nil then
  229. local itemGo = UnityEngine.GameObject.Instantiate(taskLua.iconSmallItem.gameObject)
  230. itemLua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", itemGo)
  231. itemLua.prefabName = "IconItem"
  232. itemGo.name = "IconItem"
  233. itemLua.transform:SetParent(taskLua.rewardsNode.transform)
  234. itemLua.transform.localScale = Vector3(1,1,1)
  235. itemLua.rectTransform.anchoredPosition3D = Vector3(0,0,0)
  236. taskLua.itemList[#taskLua.itemList+1] = itemLua
  237. end
  238. local rewardData = {cfgId = rewards[i][1], num = rewards[i][2] }
  239. IconItemCtr:SetData(self, itemLua, rewardData, nil, self, self.OnClickItem)
  240. itemLua:SetActive(true)
  241. end
  242. end
  243. function UIActivityKingTaskView:OnClickItem(btn,params)
  244. local logicData = params[0]
  245. ManagerContainer.LuaUIMgr:OpenTips(logicData)
  246. end
  247. function UIActivityKingTaskView:OnClickTaskGoto(btn,param)
  248. local taskData = param[0]
  249. local parentPageId = 0
  250. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMainCity1) then
  251. parentPageId = Enum.UIPageName.UIMainCity1
  252. elseif ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIBattle) then
  253. parentPageId = Enum.UIPageName.UIBattle
  254. end
  255. if taskData:CanJump() then
  256. if taskData.gotoPageId > 0 then
  257. if taskData.gotoPageId == Enum.UIPageName.UIDojo2D then
  258. ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIDojo2D, parentPageId)
  259. else
  260. ManagerContainer.LuaUIMgr:Open(taskData.gotoPageId,nil,parentPageId)
  261. end
  262. local uiData = ManagerContainer.CfgMgr:GetUIData(taskData.gotoPageId)
  263. if uiData.type == 0 then
  264. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, uiData.mainViewType)
  265. end
  266. self:UIClose()
  267. end
  268. else
  269. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("DailyTaskText")
  270. end
  271. end
  272. function UIActivityKingTaskView:OnClickTaskGet(btn,param)
  273. local taskId = param[0]
  274. ManagerContainer.DataMgr.ActsDataMgr:SendGetActivityRewardReq(self.controller:GetActivityData().actId,taskId)
  275. end
  276. function UIActivityKingTaskView:RemoveEventListener()
  277. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  278. end
  279. function UIActivityKingTaskView:AddUIEventListener()
  280. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
  281. self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickCloseBtn)
  282. end
  283. function UIActivityKingTaskView:OnClickCloseBtn()
  284. ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
  285. if self.uiBase.MSourceUIID > 0 then
  286. ManagerContainer.LuaUIMgr:Open(self.uiBase.MSourceUIID)
  287. end
  288. end
  289. function UIActivityKingTaskView:OnHide()
  290. end
  291. function UIActivityKingTaskView:OnShow(data)
  292. self.controller:SetData(data)
  293. end
  294. function UIActivityKingTaskView:OnClose()
  295. self.taskListScroll.loopListView:Dispose()
  296. if self.updateTimer then
  297. self.updateTimer:Stop();
  298. self.updateTimer = nil
  299. end
  300. end
  301. function UIActivityKingTaskView:OnDispose()
  302. self.controller:OnDispose()
  303. end
  304. return UIActivityKingTaskView