源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
6.9 KiB

  1. ReinTaskScrollItem = ReinTaskScrollItem or BaseClass(BaseItem)
  2. local ReinTaskScrollItem = ReinTaskScrollItem
  3. function ReinTaskScrollItem:__init(parent_wnd,prefab_asset,layer_name)
  4. self.base_file = "reincarnation"
  5. self.layout_file = "ReinTaskScrollItem"
  6. self.parent_wnd = parent_wnd
  7. self.layer_name = layer_name
  8. self.model = ReincarnationModel:getInstance()
  9. self:Load()
  10. end
  11. function ReinTaskScrollItem:Load_callback()
  12. local nodes = {
  13. "task_title:obj", "task_title/task_progress:tmp",
  14. "task_condition:obj:img",
  15. "task_proceed:obj:tmp",
  16. "task_req:tmp",
  17. "task_finished:tmp",
  18. }
  19. self:GetChildren(nodes)
  20. self:AddEvents()
  21. if self.need_refreshData then
  22. self:UpdateView()
  23. end
  24. end
  25. function ReinTaskScrollItem:AddEvents( )
  26. local function click_event(target)
  27. if target == self.task_proceed_obj then
  28. if self.data and self.data.task_data then -- 前往任务
  29. TaskModel:getInstance():TaskClickFun(self.data.task_data)
  30. GlobalEventSystem:Fire(EventName.CLOSE_NEW_MAIN_ROLE_VIEW)
  31. end
  32. end
  33. end
  34. AddClickEvent(self.task_proceed_obj, click_event)
  35. local function onTaskUpdate()
  36. -- 只更新当前任务进度
  37. if self.data
  38. and self.data.task_data
  39. and self.data.task_data.id == self.model:GetCurTaskId() then
  40. -- self.model:UpdateCurReinTask()
  41. self:UpdateView()
  42. end
  43. end
  44. self:BindEvent(TaskModel:getInstance(), TaskEvent.TASK_LIST_INIT, onTaskUpdate)
  45. -- -- 当前查看的转职任务是正在进行中的转职任务时,点击自动进行
  46. -- local function click_event(target)
  47. -- if target == self.gotoBtn_obj then
  48. -- if self.data and self.data.reward and self.data.auto_find then
  49. -- TaskModel:getInstance():TaskClickFun(self.data.reward)
  50. -- -- 关闭转生任务界面
  51. -- self.model:Fire(ReincarnationModel.OPEN_REIN_TASK_VIEW, false)
  52. -- end
  53. -- end
  54. -- end
  55. -- AddClickEvent(self.gotoBtn_obj, click_event)
  56. end
  57. function ReinTaskScrollItem:InitItemData( )
  58. self.task_title_obj:SetActive(false)
  59. self.task_condition_obj:SetActive(false)
  60. self.task_proceed_obj:SetActive(false)
  61. self.task_proceed_tmp.text = "<u>前往</u>"
  62. self.task_req_tmp.text = ""
  63. self.task_finished_tmp.text = ""
  64. end
  65. function ReinTaskScrollItem:SetData( data, stage,total_stage)
  66. self.data = data
  67. self.stage = stage
  68. self.total_stage = total_stage
  69. local height = 0
  70. if self.is_loaded then
  71. self.need_refreshData = false
  72. height = self:UpdateView()
  73. else
  74. self.need_refreshData = true
  75. end
  76. return height
  77. end
  78. function ReinTaskScrollItem:UpdateView( )
  79. local height = 0
  80. self:InitItemData()
  81. if self.data.title then -- 任务进度标题
  82. self.task_title_obj:SetActive(true)
  83. self.task_progress_tmp.text = self.data.title
  84. height = 32
  85. elseif self.data.task_data then -- 有任务阶段数据
  86. -- 任务内容不能直接用原先的tipContent,需要特殊处理
  87. local strs = ""
  88. -- print("Saber:ReinTaskScrollItem [92] self.data.task_data.taskTips[1].type: ",self.data.task_data.taskTips[1].type)
  89. -- print("Saber:ReinTaskScrollItem [start:93] self.data.task_data.taskTips[1] ------------------------------------------")
  90. -- PrintTable(self.data.task_data.taskTips[1])
  91. local cfg = Config.ConfigTaskEffect.ContentTip[self.data.task_data.taskTips[1].type]
  92. if cfg then
  93. if self.data.task_data.taskTips[1].type == TaskTipType.TYPE1 then -- 杀怪任务重新构建内容
  94. local temp = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.task_data.taskTips[1].id)
  95. if temp then
  96. cfg = string.gsub(cfg, "<", " <")
  97. strs = string.format(cfg, Trim(temp.name))
  98. end
  99. --显示数量
  100. if Config.ConfigTaskEffect.NeedShowNumTaskType[self.data.task_data.taskTips[1].type] or
  101. Config.ConfigTaskEffect.NeedShowNumTaskId[self.data.task_data.id] then
  102. strs = strs .. ""..HtmlColorTxt(self.data.task_data.taskTips[1].nowCount, "#2CF66F").."/"..self.data.task_data.taskTips[1].count..""
  103. end
  104. elseif self.data.task_data.taskTips[1].type == TaskTipType.TYPE2 then-- 完成副本的要重新构建内容
  105. strs = string.gsub(self.data.task_data.tipContent, "<", " <")
  106. elseif self.data.task_data.taskTips[1].type == TaskTipType.TYPE7 then -- 对话NPC的要重新构建内容
  107. strs = string.gsub(self.data.task_data.tipContent, "<", " <")
  108. strs = string.gsub(strs, ">", "> ")
  109. end
  110. end
  111. if strs == "" then -- 没有自定义出内容的话,则使用原先任务的内容
  112. strs = self.data.task_data.tipContent
  113. end
  114. self.task_req_tmp.text = strs
  115. local is_task_finished = self.data.task_data.taskTips[1] and self.data.task_data.taskTips[1].isFinish == 1 and true or false
  116. self.task_proceed_obj:SetActive(not is_task_finished)
  117. self.task_condition_obj:SetActive(is_task_finished)
  118. if is_task_finished then
  119. lua_resM:setImageSprite(self, self.task_condition_img,
  120. "reincarnation_asset", "rein_preview_finished", true)
  121. end
  122. -- 一次只会出现两个节点,需要根据不同情况做剧中对齐
  123. local len1 = self.task_req_tmp.preferredWidth + 10
  124. local len2 = not is_task_finished and self.task_proceed_tmp.preferredWidth or 0
  125. local len3 = is_task_finished and self.task_condition.sizeDelta.x or 0
  126. local offset_x = (352 - len1 - len2 - len3) / 2
  127. SetAnchoredPositionX(self.task_req, offset_x)
  128. SetAnchoredPositionX(self.task_proceed, self.task_req.anchoredPosition.x + len1)
  129. SetAnchoredPositionX(self.task_condition, self.task_req.anchoredPosition.x + len1)
  130. height = self.task_req_tmp.preferredHeight + 12
  131. elseif self.data.content then -- 直接显示文本
  132. self.task_finished_tmp.text = self.data.content
  133. height = 30
  134. elseif self.data.finish_content then -- 任务已经完成,显示进度文本并打勾
  135. self.task_req_tmp.text = self.data.finish_content
  136. self.task_condition_obj:SetActive(true)
  137. lua_resM:setImageSprite(self, self.task_condition_img, "reincarnation_asset", "rein_preview_finished", true)
  138. local len1 = self.task_req_tmp.preferredWidth + 10
  139. local len2 = self.task_condition.sizeDelta.x
  140. local offset_x = (352 - len1 - len2) / 2
  141. SetAnchoredPositionX(self.task_req, offset_x)
  142. SetAnchoredPositionX(self.task_condition, self.task_req.anchoredPosition.x + len1)
  143. height = self.task_req_tmp.preferredHeight + 12
  144. end
  145. return height
  146. end
  147. function ReinTaskScrollItem:__delete( )
  148. end