DialogueTaskBtnItem = DialogueTaskBtnItem or BaseClass(BaseItem) local DialogueTaskBtnItem = DialogueTaskBtnItem function DialogueTaskBtnItem:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "dialogue" self.layout_file = "DialogueTaskBtnItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.model = DialogueModel:getInstance() self:Load() end function DialogueTaskBtnItem:Load_callback() self.nodes = { "btn:obj:img", "name:tmp", "task_type_main:obj", "task_type_reg:obj", "flag:img", "bg:obj", } self:GetChildren(self.nodes) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function DialogueTaskBtnItem:AddEvents( ) local function click_event(target) if target == self.bg_obj then if self.callback and self.data then self.callback(self.data) end end end AddClickEvent(self.bg_obj, click_event, 2) end function DialogueTaskBtnItem:UpdateView( ) local task_cfg = ConfigItemMgr.Instance:GetTaskData(self.data.task_id) SetAnchoredPosition(self.transform, self.pos.x, self.pos.y) local is_main_task = task_cfg.type and task_cfg.type == TaskType.MAIN_LINE local color = is_main_task and "#fdffc2" or "#ffffff" self.name_tmp.text = HtmlColorTxt( self.data.task_name, color) -- self.name_tmp.color = color self.task_type_main_obj:SetActive(is_main_task) self.task_type_reg_obj:SetActive(not is_main_task) -- self.task_type_tmp.text = (task_cfg.type and task_cfg.type == TaskType.MAIN_LINE) and "主" or "支" lua_resM:setImageSprite(self, self.btn_img, "dialogue_asset", (task_cfg.type and task_cfg.type == TaskType.MAIN_LINE) and "dialogue_taskbtn_main" or "dialog_taskbtn_regional") local flag_img_str = "com_empty" -- task_state 0:无 1:有可接任务 2:有未完成的任务 3:有可提交的任务 4:有任务对话 if self.data.task_state == 3 then flag_img_str = "dialog_task_finished_pointfilter" lua_resM:setImageSprite(self, self.flag_img, "dialogue_asset", flag_img_str) elseif self.data.task_state == 1 then flag_img_str = "dialog_task_acceptable_pointfilter" lua_resM:setImageSprite(self, self.flag_img, "dialogue_asset", flag_img_str) else lua_resM:setImageSprite(self, self.flag_img, "uiComponent_asset","com_empty") end end function DialogueTaskBtnItem:SetData( data, pos, callback ) self.data = data self.pos = pos self.callback = callback if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function DialogueTaskBtnItem:__delete( ) end