源战役客户端
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

169 рядки
5.1 KiB

1 місяць тому
  1. NewerTaskItem = NewerTaskItem or BaseClass(BaseItem)
  2. local NewerTaskItem = NewerTaskItem
  3. function NewerTaskItem:__init()
  4. self.base_file = "newerTask"
  5. self.layout_file = "NewerTaskItem"
  6. self.model = NewerTaskModel:getInstance()
  7. self:Load()
  8. end
  9. function NewerTaskItem:Load_callback()
  10. self.nodes = {
  11. "icon:img", "finish_flag:obj", "bg:img",
  12. "show_cont:obj", "show_cont/task_tips:tmp", "show_cont/award_tips:tmp",
  13. "get_btn:obj", "get_btn/btn_lable:tmp", "show_cont/award_cont:img",
  14. "effect_2:obj",
  15. }
  16. self:GetChildren(self.nodes)
  17. self:AddEvents()
  18. if self.need_refreshData then
  19. self:SetData(self.data, self.index, self.is_first_show, self.auto_do_task)
  20. end
  21. end
  22. function NewerTaskItem:AddEvents( )
  23. local function on_click( obj )
  24. if obj == self.get_btn_obj then
  25. self:OnGetAward()
  26. end
  27. end
  28. AddClickEvent(self.get_btn_obj, on_click)
  29. local function onGuideTrigger()
  30. self:OnUnLockHelper()
  31. end
  32. self:BindEvent(GlobalEventSystem, EventName.TRIGGER_GUIDE_TYPE, onGuideTrigger)
  33. end
  34. function NewerTaskItem:OnGetAward( )
  35. GlobalEventSystem:Fire(NewerTaskConst.REQ_GET_AWARD, self.data.type, self.data.task_id)
  36. self:OnCloseGuide()
  37. end
  38. function NewerTaskItem:SetData( data, index , is_first_show, auto_do_task)
  39. self.data = data
  40. self.index = index
  41. self.is_first_show = is_first_show
  42. self.auto_do_task = auto_do_task
  43. if self.is_loaded then
  44. self.need_refreshData = false
  45. self:UpdateView()
  46. --首次打开不要主动触发,等待动画播完
  47. if not self.is_first_show then
  48. self:OnUnLockHelper()
  49. end
  50. else
  51. self.need_refreshData = true
  52. end
  53. end
  54. function NewerTaskItem:UpdateView( )
  55. SetLocalScale(self.transform, 1)
  56. local icon_name = NewerTaskConst.ItemIcon[self.index]
  57. lua_resM:setImageSprite(self,self.icon_img, "newerTask_asset", icon_name, true)
  58. local bg_name = self.index == 1 and "newer_task_img11" or "newer_task_img5"
  59. lua_resM:setImageSprite(self,self.bg_img, "newerTask_asset", bg_name, true)
  60. local is_finished = self.model:IsAwardFinish(self.data.type, self.data.task_id)
  61. if is_finished then
  62. self.show_cont_obj:SetActive(false)
  63. self.get_btn_obj:SetActive(false)
  64. self.finish_flag_obj:SetActive(true)
  65. self.effect_2_obj:SetActive(false)
  66. else
  67. local can_finish = TaskModel:getInstance():IsTaskFinished(self.data.task_id)
  68. -- local next_task_id = self.model:GetNextCanGetAward(self.data.type)
  69. if can_finish then-- and next_task_id == self.data.task_id then
  70. self.show_cont_obj:SetActive(false)
  71. self.get_btn_obj:SetActive(true)
  72. self.finish_flag_obj:SetActive(false)
  73. local function call_back( go )
  74. if not IsNull(go) then
  75. UIDepth.SetUIDepth(go,false,0)
  76. end
  77. end
  78. self:AddUIEffect("ui_motuoyindao02", self.effect_2, "Main", nil, 1, true,nil,nil,nil, call_back,nil)
  79. self.effect_2_obj:SetActive(true)
  80. if self.auto_do_task then
  81. self:AddUIEffect("ui_jujiaodianji", self.get_btn.transform, "Activity", nil, 1, true)
  82. end
  83. else
  84. self.show_cont_obj:SetActive(true)
  85. self.get_btn_obj:SetActive(false)
  86. self.finish_flag_obj:SetActive(false)
  87. self.effect_2_obj:SetActive(false)
  88. --任务描述
  89. local task_db = ConfigItemMgr.Instance:GetTaskData(self.data.task_id)
  90. if task_db then
  91. local str = string.format("完成%s主线任务", HtmlColorTxt(task_db.level.."", "#2cf86f"))
  92. self.task_tips_tmp.text = str
  93. end
  94. --奖励
  95. local award_vo = stringtotable(self.data.awards)
  96. award_vo = award_vo and award_vo[1] or {}
  97. local num = award_vo[3] or "1"
  98. self.award_tips_tmp.text = WordManager:GetMoneyFaceStr( price_type ) .."x"..num
  99. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(award_vo[1], award_vo[2])
  100. self.goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(typeId)
  101. local goods_icon = self.goods_basic.goods_icon
  102. lua_resM:setOutsideImageSprite(self,self.award_cont_img, GameResPath.GetGoodsIcon(goods_icon))
  103. end
  104. end
  105. end
  106. function NewerTaskItem:OnAnimation( )
  107. if IsNull(self.gameObject) then
  108. return
  109. end
  110. self:SetVisible(true)
  111. local pos = NewerTaskConst.ItemPos[self.index]
  112. SetLocalPosition(self.transform, pos.x+200, pos.y, 0)
  113. TweenLite.to(self, self.transform, TweenLite.UiAnimationType.POSX, pos.x, 0.2)
  114. end
  115. function NewerTaskItem:OnUnLockHelper( )
  116. if IsNull(self.gameObject) then
  117. return
  118. end
  119. local help_vo = GuideModel:getInstance():GetCurHelpTypeAndStep()
  120. if not help_vo then
  121. return
  122. end
  123. local target_index = help_vo.unlock_index or 1
  124. if self.index ~= target_index then
  125. return
  126. end
  127. if help_vo.help_type == HelpType.NEWER_TASK_AWARD_UNLOCK and help_vo.step == 2 then
  128. local button = self.get_btn_obj
  129. if button then
  130. self.is_on_award_helper = true
  131. local function call_back()
  132. self:OnGetAward()
  133. end
  134. GlobalEventSystem:Fire(EventName.OPEN_GUIDE_PROMPT_VIEW,button.transform,self.transform,call_back,help_vo)
  135. end
  136. end
  137. end
  138. function NewerTaskItem:OnCloseGuide( )
  139. local help_vo, help_type, step = GuideModel:getInstance():GetCurHelpTypeAndStep()
  140. if help_vo then
  141. if help_type == HelpType.NEWER_TASK_AWARD_UNLOCK then
  142. if step and step == 2 then
  143. GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,help_vo)
  144. end
  145. end
  146. end
  147. end
  148. function NewerTaskItem:__delete( )
  149. end