CSMainTaskItem = CSMainTaskItem or BaseClass(BaseItem) local CSMainTaskItem = CSMainTaskItem function CSMainTaskItem:__init() self.base_file = "csMain" self.layout_file = "CSMainTaskItem" self.model = CSMainModel:getInstance() self:Load() end function CSMainTaskItem:Load_callback() self.nodes = { "finishedFlag:obj", "getBtn:obj", "goBtn:obj", "getBtn/getRed:obj", "ScrollView", "ScrollView/Viewport/Content", "taskDes:tmp", "dot:img", "bg:img", } self:GetChildren(self.nodes) self.getRed_obj:SetActive(true) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function CSMainTaskItem:AddEvents( ) local on_click = function ( click_obj ) if self.getBtn_obj == click_obj then--领取 self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60304,1,self.data.id) elseif self.goBtn_obj == click_obj then--前往 if self.data.id == 18 or self.data.id == 32 then local act_info = GuildModel:getInstance():GetGuildEventByType(GuildEventType.GuildBossNoon) if act_info and act_info.state <= 1 then --没结束,跳午间 OpenFun.Open(406,1) else OpenFun.Open(406,2) end return end self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true) self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true) -- if self.data.id == 3 or self.data.id == 11 or self.data.id == 26 or self.data.id == 41 then -- self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true) -- self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true) -- end local open_fun_data = stringtotable(self.data.link) OpenFun.Open(open_fun_data[1],open_fun_data[2]) end end AddClickEvent(self.getBtn_obj, on_click) AddClickEvent(self.goBtn_obj, on_click) local function on_update_task_item(task_id) self:UpdateView() end self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_TASK_ITEM, on_update_task_item) end function CSMainTaskItem:UpdateView( ) local server_task_info = self.model:GetCSMainTaskDataById(self.data.id) if server_task_info then if server_task_info.state == 0 or server_task_info.state == 1 then lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow")) lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true) else lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_gray")) lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot",true) end else lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow")) lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true) end --任务描述 local des_color = ColorUtil.RED_DARK if server_task_info then if server_task_info.state == 1 or server_task_info.state == 2 then des_color = ColorUtil.GREEN_TIPS end end local bar = 0 if server_task_info then bar = server_task_info.bar end self.taskDes_tmp.text = string.format("%s(<%s>%s/%s)", Trim(self.data.desc), des_color, bar, stringtotable(self.data.content)[3]) --领取状态 local task_state = 0 if server_task_info then task_state = server_task_info.state end self.goBtn_obj:SetActive(task_state == 0) self.getBtn_obj:SetActive(task_state == 1) self.finishedFlag_obj:SetActive(task_state == 2) --奖励展示 local reward_cfg = DeepCopy(stringtotable(self.data.awards)) --插入一个活跃的awarditem展示 local active_goods_data = {0,100020,self.data.active} table.insert(reward_cfg,active_goods_data) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = reward_cfg, item_con = self.Content, obj_pool_type = UIObjPool.UIType.AwardItem, item_width = 62, space_x = 14, -- space_y = 0, start_x = 9, start_y = -9, scroll_view = self.ScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetItemSize(62, 62) SetLocalScale(item.transform,0.8,0.8,0.8) item:SetData(v[2], v[3]) end, } self.item_list_com:UpdateItems(info) end function CSMainTaskItem:SetData( data,index) self.data = data self.index = index if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function CSMainTaskItem:__delete( ) end