ActivityKingTaskItem.lua 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. local ActivityKingTaskItem = class("ActivityKingTaskItem",require("Activities/ActivityTypeItem"))
  2. local ActivityTaskItem = require("Activities/ActivityTaskItem")
  3. function ActivityKingTaskItem:ctor()
  4. self.curDay = 0
  5. self.curDayEndTime = 0
  6. self.taskList = nil
  7. self.dayTaskList = nil
  8. self.redPointType = Enum.RPNotifyType.KingTask
  9. end
  10. function ActivityKingTaskItem:SyncSrvData(serverData)
  11. --LogError("==========SyncSrvData===actId = ".. self.actId.."======="..Inspect(serverData))
  12. if not self.taskList then
  13. self.taskList = {}
  14. end
  15. if not self.dayTaskList then
  16. self.dayTaskList = {}
  17. end
  18. if self.curDay ~= serverData[1] then
  19. self.curDay = serverData[1]
  20. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_Day_Change,self.actId)
  21. end
  22. self.curDayEndTime = tonumber(tostring(serverData[2] / 1000))
  23. local idx = 0
  24. local kingTasks = serverData[3]
  25. for i = 1, #kingTasks do
  26. local taskData = kingTasks[i]
  27. local task = self:GetTaskById(taskData.task_id)
  28. if not task then
  29. task = ActivityTaskItem:new(taskData.task_id)
  30. if taskData.task_type == 5 then
  31. self.taskList[#self.taskList+1] = task
  32. else
  33. idx = idx + 1
  34. if idx == 1 then
  35. self.dayTaskList = {}
  36. end
  37. self.dayTaskList[#self.dayTaskList+1] = task
  38. end
  39. --if task.taskType == Enum.TaskType.Eve_Fight_value then
  40. -- LogHRWarning(Inspect(taskData))
  41. -- task.doNum = serverData[4]
  42. -- task.finishedNum = task.finishedNum + serverData[4]
  43. -- task.finishedNum1 = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  44. --
  45. -- task.progress = (task.finishedNum1 - task.doNum)/(task.finishedNum - task.doNum)
  46. --
  47. -- task.SyncServerData = function(task1, taskData1)
  48. -- if taskData1.progress ~= nil and #taskData1.progress > 0 then
  49. -- task1:IsFinished(taskData1.progress[1].value)
  50. -- end
  51. --
  52. -- task1.isGotReward = (taskData1.state == 2)
  53. -- if task1.isGotReward then
  54. -- task1.showPriority = 3
  55. -- end
  56. -- end
  57. -- task.IsFinished = function(task1)
  58. -- return task1.finishedNum1 >= task.finishedNum
  59. -- end
  60. -- task.SetOutofDate = function(task1, bOut)
  61. -- if task1:IsFinished() then
  62. -- return
  63. -- end
  64. -- task1.outOfDate = bOut
  65. -- if task1.outOfDate then
  66. -- task1.showPriority = 4
  67. -- end
  68. -- end
  69. --end
  70. else
  71. --if task.taskType == Enum.TaskType.Eve_Fight_value then
  72. -- LogHRWarning(Inspect(taskData))
  73. -- local fighter = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  74. -- task.finishedNum1 = taskData.progress and taskData.progress[1].value or fighter
  75. -- task.progress = (task.finishedNum1 - task.doNum)/(task.finishedNum - task.doNum)
  76. --end
  77. end
  78. task:SyncServerData(taskData)
  79. end
  80. self:SortTask(self.taskList)
  81. self:SortTask(self.dayTaskList)
  82. end
  83. function ActivityKingTaskItem:SortTask(taskList)
  84. if taskList == nil or #taskList < 2 then
  85. return
  86. end
  87. table.sort(
  88. taskList,
  89. function(a, b)
  90. if a.showPriority < b.showPriority then
  91. return true
  92. elseif a.showPriority > b.showPriority then
  93. return false
  94. else
  95. return a.taskId < b.taskId
  96. end
  97. end
  98. )
  99. end
  100. function ActivityKingTaskItem:GetTaskById(id)
  101. if self.taskList == nil then
  102. return nil
  103. end
  104. for i = 1, #self.taskList do
  105. if self.taskList[i].taskId == id then
  106. return self.taskList[i]
  107. end
  108. end
  109. for i = 1, #self.dayTaskList do
  110. if self.dayTaskList[i].taskId == id then
  111. return self.dayTaskList[i]
  112. end
  113. end
  114. return nil
  115. end
  116. function ActivityKingTaskItem:GetTaskList()
  117. return self.taskList
  118. end
  119. function ActivityKingTaskItem:GetDayTaskList()
  120. return self.dayTaskList
  121. end
  122. function ActivityKingTaskItem:HasRedPoint()
  123. return self:HasGrowTaskRP() or self:HasDayTaskRP()
  124. end
  125. function ActivityKingTaskItem:HasGrowTaskRP()
  126. if self.taskList == nil then
  127. return false
  128. end
  129. for i = 1, #self.taskList do
  130. local task = self.taskList[i]
  131. if task:HasRedPoint() then
  132. return true
  133. end
  134. end
  135. return false
  136. end
  137. function ActivityKingTaskItem:HasDayTaskRP()
  138. if self.dayTaskList == nil then
  139. return false
  140. end
  141. for i = 1, #self.dayTaskList do
  142. local task = self.dayTaskList[i]
  143. if task:HasRedPoint() then
  144. return true
  145. end
  146. end
  147. return false
  148. end
  149. function ActivityKingTaskItem:GetDayLeftTime()
  150. local leftTime = self.curDayEndTime - ManagerContainer.LuaTimerMgr:GetTimeSecond()
  151. if leftTime < 0 then
  152. leftTime = 0
  153. end
  154. return leftTime
  155. end
  156. return ActivityKingTaskItem