FuliAIItem = FuliAIItem or BaseClass(BaseItem) local FuliAIItem = FuliAIItem function FuliAIItem:__init() self.base_file = "fuli" self.layout_file = "FuliAIItem" self.model = FuliModel:GetInstance() self.awardItem_list = {} self:Load() end function FuliAIItem:Load_callback() self.nodes = { "click_con:obj","bg_image:obj","time_text:tmp","item_con", "icon_can_get:obj", } self:GetChildren(self.nodes) -- self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con) -- self.awardItem:SetEnableClick(false) -- self.awardItem:SetItemSize(84, 84) -- self.awardItem:SetVisible(false) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function FuliAIItem:AddEvents( ) local function on_click( ... ) self.model:Fire(FuliConst.REQ_FULI_SCMD, 16004, self.index) if self.is_get then self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.IS_GET) else if not self.can_get then self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.CAN_NOT_GET) end end end AddClickEvent(self.click_con_obj, on_click) end function FuliAIItem:UpdateView( ) local award_list = stringtotable(self.data.award) for i,v in ipairs(award_list) do self.awardItem_list[i] = self.awardItem_list[i] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con) local item = self.awardItem_list[i] item:SetData(v[2], v[3],nil) item:SetVisible(true) item:SetEnableClick(false) item:SetItemSize(62, 62) item:SetAnchoredPosition((i - 1) * (62 + 10), 0) end -- self.awardItem:SetData(award_list[1][2], award_list[1][3],nil) -- self.awardItem:SetVisible(true) self.bg_image_obj:SetActive(true) self.can_get = false if TableSize(self.server_data) > 0 then local rest_time = self.data.duration - self.server_data.duration_time--时间还没到 local rest_time_index = self.model:GetFuliAICountTimeIndex() if rest_time > 0 and rest_time_index == self.index then self:SetTimer(rest_time) else local min = math.floor(self.data.duration/60) self.time_text_tmp.text = "在线"..min.."分钟" -- self.bg_image_obj:SetActive(false) end if rest_time <= 0 and self.server_data.my_receive[self.index] ~= 1 then self.can_get = true -- self.red_dot_obj:SetActive(true) self.time_text_tmp.text = HtmlColorTxt("点击领取", ColorUtil.GREEN_TIPS) -- self.awardItem:SetGray(false) self:SetAwardItemGray( false ) self.icon_can_get_obj:SetActive(true) else self.is_get = self.server_data.my_receive[self.index] == 1 -- self.get_image_obj:SetActive(self.is_get) if self.is_get then self.time_text_tmp.text = HtmlColorTxt("已领取", ColorUtil.WHITE) -- self.awardItem:SetGray(true) self:SetAwardItemGray( true ) end self.icon_can_get_obj:SetActive(false) end else self.time_text_tmp.text = "" end end function FuliAIItem:SetAwardItemGray( bool ) for k,v in pairs(self.awardItem_list) do v:SetGray(bool) end end function FuliAIItem:SetTimer( time ) local function time_down() time = self.data.duration - self.server_data.duration_time if time > 0 then self.time_text_tmp.text = HtmlColorTxt(TimeUtil:timeConvert13(time), ColorUtil.GREEN_TIPS) else self.model:Fire(FuliConst.REQ_FULI_SCMD, 16003) self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index) end end self.model:SetFuncCallBack(time_down, "FuliAIItem:SetTimer"..self.index) -- self.timer_id = GlobalTimerQuest:AddPeriodQuest(time_down, 1, -1) end function FuliAIItem:StopTimer( ) -- if self.timer_id then -- GlobalTimerQuest:CancelQuest(self.timer_id) -- self.timer_id = nil -- end end function FuliAIItem:SetData(index, data,server_data ) self.index = index self.data = data self.server_data = server_data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function FuliAIItem:__delete( ) self.model:DeleteFuncCallBack("FuliAIItem:SetTimer"..self.index) -- if self.awardItem then -- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem) -- self.awardItem = nil -- end self:StopTimer() for i,item in pairs(self.awardItem_list) do UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item) end self.awardItem_list = {} end