源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 line
5.2 KiB

  1. TaskDailyItem = TaskDailyItem or BaseClass(BaseItem)
  2. TaskDailyItem.Width = 170
  3. TaskDailyItem.Height = 65
  4. function TaskDailyItem:__init()
  5. self.base_file = "task"
  6. self.layout_file = "TaskDailyItem"
  7. self.is_delay_callback = true
  8. self.model = TaskModel:getInstance()
  9. self:Load()
  10. end
  11. function TaskDailyItem:Load_callback()
  12. self.icon = self:GetChildImages({
  13. "Icon",
  14. })
  15. self.name_txt,
  16. self.progress_txt,
  17. self.content_txt = self:GetChildTexts({
  18. "Name",
  19. "Progress",
  20. "Content",
  21. })
  22. self.go_btn,
  23. self.recommend = self:GetChildGameObjects({
  24. "GoBtn",
  25. "Recommend",
  26. })
  27. self:InitEvent()
  28. if self.need_refreshData then
  29. self:SetData(self.index,self.info)
  30. end
  31. end
  32. function TaskDailyItem:InitEvent()
  33. local function onClickBtnHandler(target)
  34. if target == self.go_btn then
  35. if not self.info then
  36. return
  37. end
  38. self:ClickOperation(self.info)
  39. end
  40. end
  41. AddClickEvent(self.go_btn,onClickBtnHandler)
  42. end
  43. function TaskDailyItem:SetData(index,info)
  44. self.index = index
  45. self.info = info
  46. if self.is_loaded then
  47. self.need_refreshData = false
  48. self.name_txt.text = self.info.str
  49. if self.info.id == 1 then
  50. local total_times = BaseDungeonModel:getInstance():GetDungeonMaxTimes(3001,BaseDungeonModel.DUN_TYPE.EXP)
  51. local left_times = BaseDungeonModel:getInstance():GetDungeonLeftTimes(BaseDungeonModel.DUN_TYPE.EXP)
  52. local curr_times = math.max(0,total_times - left_times)
  53. self.progress_txt.text = string.format("(%d/%d)",curr_times,total_times)
  54. local exp,level = self.model:GetDoubleExp(self.info.id)
  55. self.content_txt.text = "预计可提升:"..level..""
  56. elseif self.info.id == 2 then
  57. local taskInfo = TaskModel:getInstance():GetCircleTaskInfo(TaskType.BOUNTY_LINE)
  58. if taskInfo then
  59. if self.model:CanAcceptCircleTask(TaskType.BOUNTY_LINE) then
  60. self.progress_txt.text = string.format("(%d/%d)",taskInfo.cur_progress,taskInfo.total_progress)
  61. else
  62. self.progress_txt.text = string.format("(%d/%d)",taskInfo.cur_progress + 1,taskInfo.total_progress)
  63. end
  64. else
  65. self.progress_txt.text = ""
  66. end
  67. local exp,level = self.model:GetDoubleExp(self.info.id)
  68. self.content_txt.text = "预计可提升:"..level..""
  69. elseif self.info.id == 3 then
  70. local taskInfo = TaskModel:getInstance():GetCircleTaskInfo(TaskType.GUILD_LINE)
  71. if taskInfo then
  72. if self.model:CanAcceptCircleTask(TaskType.GUILD_LINE) then
  73. self.progress_txt.text = string.format("(%d/%d)",taskInfo.cur_progress,taskInfo.total_progress)
  74. else
  75. self.progress_txt.text = string.format("(%d/%d)",taskInfo.cur_progress + 1,taskInfo.total_progress)
  76. end
  77. else
  78. self.progress_txt.text = ""
  79. end
  80. local exp,level = self.model:GetDoubleExp(self.info.id)
  81. self.content_txt.text = "预计可提升:"..level..""
  82. elseif self.info.id == 4 then
  83. self.progress_txt.text = ""
  84. local exp,level = self.model:GetDoubleExp(self.info.id)
  85. self.content_txt.text = "预计可提升:"..level..""
  86. elseif self.info.id == 5 then
  87. self.progress_txt.text = ""
  88. self.content_txt.text = "持续挂机,提升等级"
  89. elseif self.info.id == 6 then
  90. local total_times = BaseDungeonModel:getInstance():GetDungeonMaxTimes(3110,BaseDungeonModel.DUN_TYPE.EQUIP)
  91. local left_times = BaseDungeonModel:getInstance():GetDungeonLeftTimes(BaseDungeonModel.DUN_TYPE.EQUIP)
  92. local curr_times = math.max(0,total_times - left_times)
  93. self.progress_txt.text = string.format("(%d/%d)",curr_times,total_times)
  94. local exp,level = self.model:GetDoubleExp(self.info.id)
  95. end
  96. lua_resM:setImageSprite(self,self.icon,"activityIcon_asset",self.info.icon_name,false)
  97. if self.info.show_recommend then
  98. self.recommend:SetActive(true)
  99. else
  100. self.recommend:SetActive(false)
  101. end
  102. self:SetPosition(0,(self.index - 1) * -98)
  103. else
  104. self.need_refreshData = true
  105. end
  106. end
  107. function TaskDailyItem:__delete( )
  108. end
  109. --点击选项处理
  110. function TaskDailyItem:ClickOperation( vo )
  111. GlobalEventSystem:Fire(EventName.OPEN_TASK_DAILY_VIEW, false)
  112. if vo.id == 1 then
  113. BaseDungeonModel:getInstance():OpenViewByDunType(BaseDungeonModel.DUN_TYPE.EXP)
  114. elseif vo.id == 2 then
  115. self.model:DoBountyTask()
  116. elseif vo.id == 3 then
  117. self.model:DoGuildTask()
  118. elseif vo.id == 4 then
  119. EscortModel:getInstance():FlyToNpc()
  120. elseif vo.id == 5 then
  121. local onHookData = DailyModel:getInstance():GetOnhookConfig()
  122. if onHookData then
  123. local pointList = ErlangParser:GetInstance():Parse(onHookData.xy)
  124. local index = math.random(1, #pointList)
  125. local randomPoint = pointList[index]
  126. local x = tonumber(randomPoint[1])
  127. local y = tonumber(randomPoint[2])
  128. local call_back = function ()
  129. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  130. end
  131. local findVo = FindVo.New()
  132. findVo.type = FindVo.POINT
  133. findVo.sceneId = tonumber(onHookData.scene_id)
  134. findVo.x = x / SceneObj.LogicRealRatio.x
  135. findVo.y = y / SceneObj.LogicRealRatio.y
  136. findVo.call_back = call_back
  137. findVo.force_change_scene = true
  138. GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
  139. GlobalEventSystem:Fire(EventName.FORCE_STOP_DO_TASK)
  140. Scene.Instance:FindElement(findVo)
  141. Message.show("正在前往挂机")
  142. end
  143. elseif vo.id == 6 then
  144. BaseDungeonModel:getInstance():OpenViewByDunType(BaseDungeonModel.DUN_TYPE.EQUIP)
  145. end
  146. end