NewerTaskItem = NewerTaskItem or BaseClass(BaseItem) local NewerTaskItem = NewerTaskItem function NewerTaskItem:__init() self.base_file = "newerTask" self.layout_file = "NewerTaskItem" self.model = NewerTaskModel:getInstance() self:Load() end function NewerTaskItem:Load_callback() self.nodes = { "icon:img", "finish_flag:obj", "bg:img", "show_cont:obj", "show_cont/task_tips:tmp", "show_cont/award_tips:tmp", "get_btn:obj", "get_btn/btn_lable:tmp", "show_cont/award_cont:img", "effect_2:obj", } self:GetChildren(self.nodes) self:AddEvents() if self.need_refreshData then self:SetData(self.data, self.index, self.is_first_show, self.auto_do_task) end end function NewerTaskItem:AddEvents( ) local function on_click( obj ) if obj == self.get_btn_obj then self:OnGetAward() end end AddClickEvent(self.get_btn_obj, on_click) local function onGuideTrigger() self:OnUnLockHelper() end self:BindEvent(GlobalEventSystem, EventName.TRIGGER_GUIDE_TYPE, onGuideTrigger) end function NewerTaskItem:OnGetAward( ) GlobalEventSystem:Fire(NewerTaskConst.REQ_GET_AWARD, self.data.type, self.data.task_id) self:OnCloseGuide() end function NewerTaskItem:SetData( data, index , is_first_show, auto_do_task) self.data = data self.index = index self.is_first_show = is_first_show self.auto_do_task = auto_do_task if self.is_loaded then self.need_refreshData = false self:UpdateView() --首次打开不要主动触发,等待动画播完 if not self.is_first_show then self:OnUnLockHelper() end else self.need_refreshData = true end end function NewerTaskItem:UpdateView( ) SetLocalScale(self.transform, 1) local icon_name = NewerTaskConst.ItemIcon[self.index] lua_resM:setImageSprite(self,self.icon_img, "newerTask_asset", icon_name, true) local bg_name = self.index == 1 and "newer_task_img11" or "newer_task_img5" lua_resM:setImageSprite(self,self.bg_img, "newerTask_asset", bg_name, true) local is_finished = self.model:IsAwardFinish(self.data.type, self.data.task_id) if is_finished then self.show_cont_obj:SetActive(false) self.get_btn_obj:SetActive(false) self.finish_flag_obj:SetActive(true) self.effect_2_obj:SetActive(false) else local can_finish = TaskModel:getInstance():IsTaskFinished(self.data.task_id) -- local next_task_id = self.model:GetNextCanGetAward(self.data.type) if can_finish then-- and next_task_id == self.data.task_id then self.show_cont_obj:SetActive(false) self.get_btn_obj:SetActive(true) self.finish_flag_obj:SetActive(false) local function call_back( go ) if not IsNull(go) then UIDepth.SetUIDepth(go,false,0) end end self:AddUIEffect("ui_motuoyindao02", self.effect_2, "Main", nil, 1, true,nil,nil,nil, call_back,nil) self.effect_2_obj:SetActive(true) if self.auto_do_task then self:AddUIEffect("ui_jujiaodianji", self.get_btn.transform, "Activity", nil, 1, true) end else self.show_cont_obj:SetActive(true) self.get_btn_obj:SetActive(false) self.finish_flag_obj:SetActive(false) self.effect_2_obj:SetActive(false) --任务描述 local task_db = ConfigItemMgr.Instance:GetTaskData(self.data.task_id) if task_db then local str = string.format("完成%s主线任务", HtmlColorTxt(task_db.level.."级", "#2cf86f")) self.task_tips_tmp.text = str end --奖励 local award_vo = stringtotable(self.data.awards) award_vo = award_vo and award_vo[1] or {} local num = award_vo[3] or "1" self.award_tips_tmp.text = WordManager:GetMoneyFaceStr( price_type ) .."x"..num local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(award_vo[1], award_vo[2]) self.goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(typeId) local goods_icon = self.goods_basic.goods_icon lua_resM:setOutsideImageSprite(self,self.award_cont_img, GameResPath.GetGoodsIcon(goods_icon)) end end end function NewerTaskItem:OnAnimation( ) if IsNull(self.gameObject) then return end self:SetVisible(true) local pos = NewerTaskConst.ItemPos[self.index] SetLocalPosition(self.transform, pos.x+200, pos.y, 0) TweenLite.to(self, self.transform, TweenLite.UiAnimationType.POSX, pos.x, 0.2) end function NewerTaskItem:OnUnLockHelper( ) if IsNull(self.gameObject) then return end local help_vo = GuideModel:getInstance():GetCurHelpTypeAndStep() if not help_vo then return end local target_index = help_vo.unlock_index or 1 if self.index ~= target_index then return end if help_vo.help_type == HelpType.NEWER_TASK_AWARD_UNLOCK and help_vo.step == 2 then local button = self.get_btn_obj if button then self.is_on_award_helper = true local function call_back() self:OnGetAward() end GlobalEventSystem:Fire(EventName.OPEN_GUIDE_PROMPT_VIEW,button.transform,self.transform,call_back,help_vo) end end end function NewerTaskItem:OnCloseGuide( ) local help_vo, help_type, step = GuideModel:getInstance():GetCurHelpTypeAndStep() if help_vo then if help_type == HelpType.NEWER_TASK_AWARD_UNLOCK then if step and step == 2 then GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,help_vo) end end end end function NewerTaskItem:__delete( ) end