ChildMainTaskItem = ChildMainTaskItem or BaseClass(BaseItem) function ChildMainTaskItem:__init() self.base_file = "child" self.layout_file = "ChildMainTaskItem" self.is_delay_callback = true -- self.use_local_view = true self.model = ChildModel:GetInstance() self:Load() end function ChildMainTaskItem:Load_callback() self.nodes = { "bg/txt_desc:tmp","bg/image_had:obj","bg/image_go:obj:img","bg/image_get:obj:img", "bg/image_go/lb_image_go:tmp", "bg/image_get/lb_image_get:tmp", "bg:obj","bg/red_dot:obj", "bg/txt_num:tmp", "bg/fillImg:img", "bg/progressText:tmp", "bg/awardCon", } self:GetChildren(self.nodes) self:InitEvent() if self.need_refreshData then self:SetData(self.data) end end function ChildMainTaskItem:InitEvent() local function onBtnClickHandler(target, x, y) if self.model:IsHeartValueMax() then Message.show("同心值已满,请尽快领取奖励!") return end if target == self.image_get_obj then if self.data.task_state == 1 then -- Message.show("完成任务:",self.data.task_id) self.model:Fire(ChildConst.CHILD_REQ_EVENT, 16506,1,self.data.task_id,0) elseif self.data.task_state == 2 then Message.show("已领取") else end elseif target == self.image_go_obj then local list = stringtotable(self.data.client_skip) local winId = tonumber(list[1][1]) local subId = tonumber(list[1][2]) OpenFun.Open(winId, subId) end end AddClickEvent(self.image_get_obj, onBtnClickHandler) AddClickEvent(self.image_go_obj, onBtnClickHandler) end function ChildMainTaskItem:SetData(data) self.data = data if self.is_loaded then if not data then return end local color = "#18a426" if data.progress < data.progress_max then color = "#ff373c" end -- 描述 self.txt_desc_tmp.text = string.format("%s (%s/%s)",Trim(data.desc),color,data.progress,data.progress_max) or "" --同心值 --self.txt_num_tmp.text = data.reward_exp or 0 self.main_reward_item = self.main_reward_item or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon) self.main_reward_item:SetPosition(0, 0) self.main_reward_item:SetItemSize(62, 62) self.main_reward_item:SetVisible(true) local reward = stringtotable(self.model:GetConfigChildKvVal("heart_feed"))[1] local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(0, reward[1]) local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id) if goodVo then self.main_reward_item:SetData(goodVo.type_id, data.reward_exp or 0, goodVo.color, 0, lock,true,nil) end -- 进度 self.progressText_tmp.text = string.format("(%s/%s)", ColorUtil.WHITE_DARK, data.progress,data.progress_max) self.fillImg_img.fillAmount = data.progress / data.progress_max -- 按钮状态 self.image_get_obj:SetActive(false) self.image_had_obj:SetActive(false) self.image_go_obj:SetActive(false) self.red_dot_obj:SetActive(false) --0-未完成 1-已完成未领取 2-已领取 if data.task_state == 1 then self.image_get_obj:SetActive(true) --未领取 self.red_dot_obj:SetActive(not self.model:IsHeartValueMax()) elseif data.task_state == 2 then self.image_had_obj:SetActive(true) --已完成 else self.image_go_obj:SetActive(true) --已领取未完成 end if self.model:IsHeartValueMax() then SetImageGray(self.image_get_img, true) SetTMPSharedMaterial(self.lb_image_get_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) SetImageGray(self.image_go_img, true) SetTMPSharedMaterial(self.lb_image_go_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) else SetImageGray(self.image_get_img, false) SetTMPSharedMaterial(self.lb_image_get_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) SetImageGray(self.image_go_img, false) SetTMPSharedMaterial(self.lb_image_go_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn) end else self.need_refreshData = true end end function ChildMainTaskItem:__delete( ) if self.main_reward_item then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.main_reward_item) self.main_reward_item = nil end end