源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

261 行
9.2 KiB

  1. SevenDayTargetTaskItem = SevenDayTargetTaskItem or BaseClass(BaseItem)
  2. local SevenDayTargetTaskItem = SevenDayTargetTaskItem
  3. SevenDayTargetTaskItem.HEIGHT = 90
  4. SevenDayTargetTaskItem.WIDTH = 527
  5. SevenDayTargetTaskItem.START_X = 8
  6. SevenDayTargetTaskItem.START_Y = -4
  7. SevenDayTargetTaskItem.SPACE_Y = 0
  8. local ICON_DES = {
  9. [1] = "装备",
  10. [2] = "社交",
  11. [3] = "战魂",
  12. [4] = "成长",
  13. [5] = "制衣",
  14. [6] = "宠物",
  15. }
  16. function SevenDayTargetTaskItem:__init()
  17. self.base_file = "sevenDayTarget"
  18. self.layout_file = "SevenDayTargetTaskItem"
  19. self.model = SevenDayTargetModel:GetInstance()
  20. self:Load()
  21. end
  22. function SevenDayTargetTaskItem:Load_callback()
  23. self.nodes = {
  24. "condition_text:tmp", "bg", "item_con", "star_con/star1:img", "star_con/star2:img", "star_con/star3:img",
  25. "get_image:obj", "btn:obj:img", "btn/btn_red:obj", "btn/btn_text:tmp", "name_text:tmp",
  26. "star_con", "icon:img", "lb_icon_des:tmp", "lock:obj", "lock/lockText:tmp",
  27. }
  28. self:GetChildren(self.nodes)
  29. self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
  30. self.awardItem:SetItemSize(62, 62)
  31. SetAnchoredPositionX(self.lb_icon_des, -220)
  32. self:AddEvents()
  33. if self.need_refreshData then
  34. self:UpdateView()
  35. end
  36. end
  37. function SevenDayTargetTaskItem:AddEvents( )
  38. local function on_click( )
  39. if self.model:TaskItemIsAniming() then
  40. return
  41. end
  42. if self.can_receive then
  43. self.model:Fire(SevenDayTargetModel.REQUEST_SEVEN_DAY_TARGET_SCMD, 17601, self.data.days, self.data.mod_id, self.data.sub_id)
  44. else
  45. if self.data.jump_id then
  46. local data = stringtotable(self.data.jump_id)
  47. if data and TableSize(data) > 0 then
  48. if data[1] == 61000 then--进阶副本跳转特殊处理
  49. BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_HALL_VIEW,BaseDungeonModel.DUN_TYPE.MATERIAL,data[2])
  50. elseif data[1] == 46100 then--击杀特定boss的特殊处理
  51. OpenFun.Open(461,0,nil,data[2])
  52. else
  53. if data[1] == 300 or data[1] == 500 then--任务类关界面 护送也关
  54. self.model:Fire(SevenDayTargetModel.CLOSE_SEVEN_DAY_TARGET_MAIN_VIEW)
  55. end
  56. OpenFun.Open(data[1],data[2])
  57. end
  58. end
  59. end
  60. end
  61. end
  62. AddClickEvent(self.btn_obj, on_click)
  63. end
  64. function SevenDayTargetTaskItem:UpdateView( )
  65. if not self.data then return end
  66. local cur_num = 0
  67. if self.server_data then
  68. cur_num = self.server_data.progress
  69. self.is_receive = self.server_data.is_receive == 1 and true or false
  70. else
  71. self.is_receive = false
  72. end
  73. local total_num = self.data.limit_times or 1
  74. self.btn_red_obj:SetActive(false)
  75. if cur_num >= total_num then
  76. self.btn_text_tmp.text = "领取"
  77. self.can_receive = true
  78. self.btn_red_obj:SetActive(true)
  79. lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_2")
  80. SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  81. else
  82. self.btn_text_tmp.text = "前往"
  83. self.can_receive = false
  84. lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_1")
  85. SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn)
  86. end
  87. local color = cur_num >= total_num and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
  88. local desc = string.format("%s(%s/%s)", Trim(self.data.desc), HtmlColorTxt( cur_num, color) , total_num)
  89. self.condition_text_tmp.text = string.gsub( desc, [[\n]], "\n" )
  90. -- self.name_text_tmp.text = self.data.name
  91. -- SetAnchoredPositionX(self.star_con, self.name_text_tmp.preferredWidth + 10 + 44)--44是文本的坐标
  92. -- for i=1,3 do
  93. -- if self.data.difficulty >= i then
  94. -- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item14")
  95. -- else
  96. -- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item15")
  97. -- end
  98. -- end
  99. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(self.data.reward_info[1][1], self.data.reward_info[1][2])
  100. self.awardItem:SetData(typeId, self.data.reward_info[1][3])
  101. -- 图标
  102. -- local cfg = OpenFun.LinkWin[self.data.mod_id.."@"..self.data.sub_id]
  103. -- if cfg then
  104. -- lua_resM:setImageSprite(self, self.icon_img, "activityIcon_asset", cfg.icon_res)
  105. -- end
  106. local cfg = Config.Sevengoaltask[string.format('%s@%s@%s', self.data.days, self.data.mod_id, self.data.sub_id)]
  107. self.lb_icon_des_tmp.text = ICON_DES[cfg.task_tag]
  108. lua_resM:setImageSprite(self, self.icon_img, "sevenDayTarget_asset", "sevenDayTarget_tag_" .. cfg.task_tag, true)
  109. -- 锁定
  110. local data = stringtotable(self.data.jump_id)
  111. local cfg = OpenFun.LinkWin[data[1] .. "@" .. data[2]]
  112. local is_open, conf = false, false
  113. if cfg then
  114. is_open, conf = GetModuleIsOpen(cfg.winId, cfg.subId)
  115. else
  116. is_open, conf = GetModuleIsOpen(self.data.mod_id, self.data.sub_id)
  117. end
  118. if is_open then
  119. self.lock_obj:SetActive(false)
  120. self.btn_obj:SetActive(not self.is_receive)
  121. self.get_image_obj:SetActive(self.is_receive)
  122. SetImageGray(self.icon_img, false)
  123. else
  124. -- local level = RoleManager.Instance.mainRoleInfo.level
  125. if Trim(self.data.name) ~= "" then -- 有任务
  126. self.lockText_tmp.text = string.format('%s解锁', HtmlColorTxt(Trim(self.data.name), ColorUtil.RED_DARK))
  127. elseif conf then -- 没任务 说明是等级解锁
  128. self.lockText_tmp.text = string.format('等级%s解锁', HtmlColorTxt( conf.open_lv, ColorUtil.RED_DARK))
  129. else
  130. print('=======Msh:SevenDayTargetTaskItem.lua[138] ==配置有误=====', self.data.mod_id, self.data.sub_id)
  131. end
  132. self.lock_obj:SetActive(true)
  133. self.btn_obj:SetActive(false)
  134. self.get_image_obj:SetActive(false)
  135. SetImageGray(self.icon_img, true)
  136. end
  137. end
  138. function SevenDayTargetTaskItem:SetCallBackFunc( func )
  139. self.callback_func = func
  140. end
  141. function SevenDayTargetTaskItem:SetData( data,index,server_data )
  142. self.data = data
  143. self.index = index
  144. self.server_data = server_data
  145. if self.is_loaded then
  146. self.need_refreshData = false
  147. self:UpdateView()
  148. else
  149. self.need_refreshData = true
  150. end
  151. end
  152. ----------领取位移刷新动画 by msh-start---------
  153. -- 移动到新索引的位置
  154. function SevenDayTargetTaskItem:MoveNewIndexPosAnimAndUpdate( old_index, new_index, new_data, new_server_data,anim_call_back )
  155. local origin_pos = self:GetIndexPos(old_index)
  156. local move_one_index_time = 0.15
  157. local old_index = old_index
  158. local new_server_data = new_server_data or nil
  159. local anim_call_back = anim_call_back or nil
  160. self.index = new_index -- 存一下新索引
  161. -- 动画完成后更新索引
  162. local last_func = function( )
  163. if anim_call_back then
  164. anim_call_back()
  165. end
  166. end
  167. if new_index > old_index then -- 位置下移
  168. -- 从目标索引位置右边 移动到目标索引位置
  169. local move_func1 = function( )
  170. local server_data = self.model:GetSevenDayTargetInfo(self.cur_select_day) or {}
  171. self:SetData( new_data, new_index, new_server_data) -- 消失后 刷新
  172. self:PlayLineAnim(self:GetIndexPos(new_index, SevenDayTargetTaskItem.WIDTH - 100),
  173. self:GetIndexPos(new_index),
  174. move_one_index_time,
  175. last_func)
  176. end
  177. -- 先往右移
  178. self:PlayLineAnim(origin_pos, self:GetIndexPos(old_index, SevenDayTargetTaskItem.WIDTH - 100),
  179. move_one_index_time, move_func1)
  180. elseif old_index - new_index == 1 then -- 上移一格
  181. self:SetData( new_data, new_index, new_server_data)
  182. self:PlayLineAnim(origin_pos, self:GetIndexPos(new_index), move_one_index_time ,last_func, move_one_index_time)
  183. else -- 直接刷
  184. self:SetData( new_data, new_index, new_server_data)
  185. last_func()
  186. end
  187. end
  188. -- 移动到目标位置
  189. function SevenDayTargetTaskItem:PlayLineAnim( start_pos, end_pos, anim_time, end_func, delay_time )
  190. self:SetPosition(start_pos.x, start_pos.y, start_pos.z)
  191. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
  192. local anim_time = anim_time or 0.2
  193. local delay_time = delay_time or 0
  194. -- 延迟
  195. local action1 = cc.DelayTime.New( delay_time )
  196. -- 位移
  197. local function move_func( percent )
  198. SetLocalPosition(self.transform, start_pos.x + (end_pos.x - start_pos.x) * percent,
  199. start_pos.y + (end_pos.y - start_pos.y) * percent, 0)
  200. end
  201. local action2 = cc.CustomUpdate.New(anim_time, move_func)
  202. -- 回调
  203. local function callback_1()
  204. if end_func then
  205. end_func()
  206. end
  207. end
  208. local call_func_1 = cc.CallFunc.New(callback_1)
  209. local action10 = cc.Sequence.New( action1, action2, call_func_1 )
  210. self:AddAction(action10, self.transform)
  211. end
  212. function SevenDayTargetTaskItem:GetIndexPos( index, offset_x )
  213. local offset_x = offset_x or 0
  214. return Vector3(offset_x + SevenDayTargetTaskItem.START_X, SevenDayTargetTaskItem.START_Y - (index-1) * (SevenDayTargetTaskItem.HEIGHT + SevenDayTargetTaskItem.SPACE_Y), 0)
  215. end
  216. function SevenDayTargetTaskItem:SetIndexPos( index )
  217. local pos = self:GetIndexPos( index )
  218. self:SetPosition(pos.x, pos.y, pos.z)
  219. end
  220. -- 停止当前动画
  221. function SevenDayTargetTaskItem:StopAnim( )
  222. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
  223. if self.index then
  224. local pos = self:GetIndexPos(self.index)
  225. self:SetPosition(pos.x, pos.y)
  226. end
  227. end
  228. ----------领取位移刷新动画 by msh-end-----------
  229. function SevenDayTargetTaskItem:__delete( )
  230. if self.awardItem then
  231. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
  232. self.awardItem = nil
  233. end
  234. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
  235. end