ChatDressCosumeItem = ChatDressCosumeItem or BaseClass(BaseItem) function ChatDressCosumeItem:__init(parent) self.base_file = "chatDress" self.layout_file = "ChatDressCosumeItem" -- self.use_local_view = true self.type_id = 0 self.have_num = 0 self.use_num = 0 self.model = ChatDressModel:getInstance() self:Load() end function ChatDressCosumeItem:Load_callback() self.icon = self:GetChild("icon") self.select = GetChildGameObjects(self.transform, { "select" }) self.item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon) self.item.ClickCallFun = function () self:SelectAll(not self.select.activeSelf) end if self.need_refreshData then self:SetData(self.vo,self.select_all) end if self.select_cache then self.select_cache = false self:SelectAll(self.select_state) end self:InitEvent() end function ChatDressCosumeItem:InitEvent() local function onBagChange() self.have_num = GoodsModel:getInstance():GetTypeGoodsNum(self.type_id) if self.have_num <= 0 then self:SetVisible(false) end if self.select.activeSelf then self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.have_num) end end self.change_bag_event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, onBagChange) end function ChatDressCosumeItem:SetData(vo,select_all) self.vo = vo self.select_all = select_all self.have_num = vo.goods_num self.use_num = 0 self.type_id = vo.type_id if self.is_loaded then self.item:SetData(self.type_id, self.have_num) if self.select.activeSelf then self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.use_num) end if select_all then self:SelectAll(true) end else self.need_refreshData = true end end function ChatDressCosumeItem:SelectAll(bool) self.select_state = bool if self.is_loaded then if bool then self.use_num = self.have_num else self.use_num = 0 end self.select:SetActive(bool) self.model:Fire(ChatDressEvent.ADD_COSUME_ITEM, self.type_id, self.use_num) else self.select_cache = true end end function ChatDressCosumeItem:__delete() if self.item then self.item:ReleaseObj() self.item = nil end if self.change_bag_event_id then GoodsModel:getInstance():UnBind(self.change_bag_event_id) self.change_bag_event_id = nil end end