SevenDayTargetTaskItem = SevenDayTargetTaskItem or BaseClass(BaseItem) local SevenDayTargetTaskItem = SevenDayTargetTaskItem SevenDayTargetTaskItem.HEIGHT = 90 SevenDayTargetTaskItem.WIDTH = 527 SevenDayTargetTaskItem.START_X = 8 SevenDayTargetTaskItem.START_Y = -4 SevenDayTargetTaskItem.SPACE_Y = 0 local ICON_DES = { [1] = "装备", [2] = "社交", [3] = "战魂", [4] = "成长", [5] = "制衣", [6] = "宠物", } function SevenDayTargetTaskItem:__init() self.base_file = "sevenDayTarget" self.layout_file = "SevenDayTargetTaskItem" self.model = SevenDayTargetModel:GetInstance() self:Load() end function SevenDayTargetTaskItem:Load_callback() self.nodes = { "condition_text:tmp", "bg", "item_con", "star_con/star1:img", "star_con/star2:img", "star_con/star3:img", "get_image:obj", "btn:obj:img", "btn/btn_red:obj", "btn/btn_text:tmp", "name_text:tmp", "star_con", "icon:img", "lb_icon_des:tmp", "lock:obj", "lock/lockText:tmp", } self:GetChildren(self.nodes) self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con) self.awardItem:SetItemSize(62, 62) SetAnchoredPositionX(self.lb_icon_des, -220) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function SevenDayTargetTaskItem:AddEvents( ) local function on_click( ) if self.model:TaskItemIsAniming() then return end if self.can_receive then self.model:Fire(SevenDayTargetModel.REQUEST_SEVEN_DAY_TARGET_SCMD, 17601, self.data.days, self.data.mod_id, self.data.sub_id) else if self.data.jump_id then local data = stringtotable(self.data.jump_id) if data and TableSize(data) > 0 then if data[1] == 61000 then--进阶副本跳转特殊处理 BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_HALL_VIEW,BaseDungeonModel.DUN_TYPE.MATERIAL,data[2]) elseif data[1] == 46100 then--击杀特定boss的特殊处理 OpenFun.Open(461,0,nil,data[2]) else if data[1] == 300 or data[1] == 500 then--任务类关界面 护送也关 self.model:Fire(SevenDayTargetModel.CLOSE_SEVEN_DAY_TARGET_MAIN_VIEW) end OpenFun.Open(data[1],data[2]) end end end end end AddClickEvent(self.btn_obj, on_click) end function SevenDayTargetTaskItem:UpdateView( ) if not self.data then return end local cur_num = 0 if self.server_data then cur_num = self.server_data.progress self.is_receive = self.server_data.is_receive == 1 and true or false else self.is_receive = false end local total_num = self.data.limit_times or 1 self.btn_red_obj:SetActive(false) if cur_num >= total_num then self.btn_text_tmp.text = "领取" self.can_receive = true self.btn_red_obj:SetActive(true) lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_2") SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) else self.btn_text_tmp.text = "前往" self.can_receive = false lua_resM:setImageSprite(self, self.btn_img, "alphaCommon_asset", "tyui_btn_1") SetTMPSharedMaterial(self.btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn) end local color = cur_num >= total_num and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK local desc = string.format("%s(%s/%s)", Trim(self.data.desc), HtmlColorTxt( cur_num, color) , total_num) self.condition_text_tmp.text = string.gsub( desc, [[\n]], "\n" ) -- self.name_text_tmp.text = self.data.name -- SetAnchoredPositionX(self.star_con, self.name_text_tmp.preferredWidth + 10 + 44)--44是文本的坐标 -- for i=1,3 do -- if self.data.difficulty >= i then -- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item14") -- else -- lua_resM:setImageSprite(self, self["star"..i.."_img"], "sevenDayTarget_asset", "sevenDayTarget_item15") -- end -- end local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(self.data.reward_info[1][1], self.data.reward_info[1][2]) self.awardItem:SetData(typeId, self.data.reward_info[1][3]) -- 图标 -- local cfg = OpenFun.LinkWin[self.data.mod_id.."@"..self.data.sub_id] -- if cfg then -- lua_resM:setImageSprite(self, self.icon_img, "activityIcon_asset", cfg.icon_res) -- end local cfg = Config.Sevengoaltask[string.format('%s@%s@%s', self.data.days, self.data.mod_id, self.data.sub_id)] self.lb_icon_des_tmp.text = ICON_DES[cfg.task_tag] lua_resM:setImageSprite(self, self.icon_img, "sevenDayTarget_asset", "sevenDayTarget_tag_" .. cfg.task_tag, true) -- 锁定 local data = stringtotable(self.data.jump_id) local cfg = OpenFun.LinkWin[data[1] .. "@" .. data[2]] local is_open, conf = false, false if cfg then is_open, conf = GetModuleIsOpen(cfg.winId, cfg.subId) else is_open, conf = GetModuleIsOpen(self.data.mod_id, self.data.sub_id) end if is_open then self.lock_obj:SetActive(false) self.btn_obj:SetActive(not self.is_receive) self.get_image_obj:SetActive(self.is_receive) SetImageGray(self.icon_img, false) else -- local level = RoleManager.Instance.mainRoleInfo.level if Trim(self.data.name) ~= "" then -- 有任务 self.lockText_tmp.text = string.format('%s解锁', HtmlColorTxt(Trim(self.data.name), ColorUtil.RED_DARK)) elseif conf then -- 没任务 说明是等级解锁 self.lockText_tmp.text = string.format('等级%s解锁', HtmlColorTxt( conf.open_lv, ColorUtil.RED_DARK)) else print('=======Msh:SevenDayTargetTaskItem.lua[138] ==配置有误=====', self.data.mod_id, self.data.sub_id) end self.lock_obj:SetActive(true) self.btn_obj:SetActive(false) self.get_image_obj:SetActive(false) SetImageGray(self.icon_img, true) end end function SevenDayTargetTaskItem:SetCallBackFunc( func ) self.callback_func = func end function SevenDayTargetTaskItem:SetData( data,index,server_data ) self.data = data self.index = index self.server_data = server_data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end ----------领取位移刷新动画 by msh-start--------- -- 移动到新索引的位置 function SevenDayTargetTaskItem:MoveNewIndexPosAnimAndUpdate( old_index, new_index, new_data, new_server_data,anim_call_back ) local origin_pos = self:GetIndexPos(old_index) local move_one_index_time = 0.15 local old_index = old_index local new_server_data = new_server_data or nil local anim_call_back = anim_call_back or nil self.index = new_index -- 存一下新索引 -- 动画完成后更新索引 local last_func = function( ) if anim_call_back then anim_call_back() end end if new_index > old_index then -- 位置下移 -- 从目标索引位置右边 移动到目标索引位置 local move_func1 = function( ) local server_data = self.model:GetSevenDayTargetInfo(self.cur_select_day) or {} self:SetData( new_data, new_index, new_server_data) -- 消失后 刷新 self:PlayLineAnim(self:GetIndexPos(new_index, SevenDayTargetTaskItem.WIDTH - 100), self:GetIndexPos(new_index), move_one_index_time, last_func) end -- 先往右移 self:PlayLineAnim(origin_pos, self:GetIndexPos(old_index, SevenDayTargetTaskItem.WIDTH - 100), move_one_index_time, move_func1) elseif old_index - new_index == 1 then -- 上移一格 self:SetData( new_data, new_index, new_server_data) self:PlayLineAnim(origin_pos, self:GetIndexPos(new_index), move_one_index_time ,last_func, move_one_index_time) else -- 直接刷 self:SetData( new_data, new_index, new_server_data) last_func() end end -- 移动到目标位置 function SevenDayTargetTaskItem:PlayLineAnim( start_pos, end_pos, anim_time, end_func, delay_time ) self:SetPosition(start_pos.x, start_pos.y, start_pos.z) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) local anim_time = anim_time or 0.2 local delay_time = delay_time or 0 -- 延迟 local action1 = cc.DelayTime.New( delay_time ) -- 位移 local function move_func( percent ) SetLocalPosition(self.transform, start_pos.x + (end_pos.x - start_pos.x) * percent, start_pos.y + (end_pos.y - start_pos.y) * percent, 0) end local action2 = cc.CustomUpdate.New(anim_time, move_func) -- 回调 local function callback_1() if end_func then end_func() end end local call_func_1 = cc.CallFunc.New(callback_1) local action10 = cc.Sequence.New( action1, action2, call_func_1 ) self:AddAction(action10, self.transform) end function SevenDayTargetTaskItem:GetIndexPos( index, offset_x ) local offset_x = offset_x or 0 return Vector3(offset_x + SevenDayTargetTaskItem.START_X, SevenDayTargetTaskItem.START_Y - (index-1) * (SevenDayTargetTaskItem.HEIGHT + SevenDayTargetTaskItem.SPACE_Y), 0) end function SevenDayTargetTaskItem:SetIndexPos( index ) local pos = self:GetIndexPos( index ) self:SetPosition(pos.x, pos.y, pos.z) end -- 停止当前动画 function SevenDayTargetTaskItem:StopAnim( ) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) if self.index then local pos = self:GetIndexPos(self.index) self:SetPosition(pos.x, pos.y) end end ----------领取位移刷新动画 by msh-end----------- function SevenDayTargetTaskItem:__delete( ) if self.awardItem then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem) self.awardItem = nil end cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform) end