ChatDressItem = ChatDressItem or BaseClass(BaseItem) function ChatDressItem:__init(parent) self.base_file = "chatDress" self.layout_file = "ChatDressItem" self.data = nil self.is_selected = false self.index = 0 self.event_list = {} self.prop_item_list = {} self.model = ChatDressModel:getInstance() self:Load() end function ChatDressItem:Load_callback() self.nodes = { "select_image:obj", "click_con:obj", "mark_image:obj", "lock_image:obj", "wear_image:obj", "active_image:obj", "head:img:obj", "red_image:obj", "name_text:tmp", } self:GetChildren(self.nodes) self:InitEvent() if self.need_refreshData then self:UpdateView() end if self.need_reselect then self:SetSelect(self.select_id) end end function ChatDressItem:InitEvent() local function onClick(target) self.call_back(self.index, self.data) end AddClickEvent(self.click_con_obj, onClick) end -- 装扮信息 function ChatDressItem:SetData(index, data, call_back) self.index = index self.data = data self.call_back = call_back if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function ChatDressItem:UpdateView( ) local data = self.data local type_id = data.dress_id local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id) local goods_icon = goods_basic.goods_icon type_id = tonumber(type_id) local goods_name = GoodsModel:getInstance():getGoodsName(type_id, false) self.name_text_tmp.text = goods_name if Config.ConfigGoodsByCareer[type_id] then goods_icon = Config.ConfigGoodsByCareer[type_id][RoleManager.Instance.mainRoleInfo.career] end local set_img_cb = function ( ) local new_width = GetSizeDeltaX(self.head_img.transform) * 0.95 local new_height = GetSizeDeltaY(self.head_img.transform) * 0.95 SetSizeDelta(self.head_img.transform, new_width, new_height) end lua_resM:setOutsideImageSprite(self, self.head_img, GameResPath.GetGoodsIcon(goods_icon), true, set_img_cb) self.wear_image_obj:SetActive(self.model:GetCurUseDressId(data.dress_type) == data.dress_id) self.lock_image_obj:SetActive(false) local can_active = data.can_active and true or false self.active_image_obj:SetActive(can_active) self.mark_image_obj:SetActive(not data.is_active and not data.can_active) end -- function ChatDressItem:ClickFunc() self:SetSelect(true) end function ChatDressItem:GetActiveState( ) local data = self.data if data.is_active and not data.can_active then return ChatDressModel.AcitiveState.Actived elseif not data.is_active and not data.can_active then return ChatDressModel.AcitiveState.Locked elseif not data.is_active and data.can_active then return ChatDressModel.AcitiveState.CanActive end end function ChatDressItem:GetId( ) return self.data.dress_id end -- 选择情况 function ChatDressItem:SetSelect(index) self.select_id = index if self.is_loaded then self.need_reselect = false self.select_image_obj:SetActive(self.select_id == self.index) else self.need_reselect = true end end function ChatDressItem:__delete() for k, v in pairs(self.event_list) do self.model:UnBind(v) v = nil end self.event_list = {} if self.bag_change_event_id then GoodsModel:getInstance():UnBind(self.bag_change_event_id) self.bag_change_event_id = nil end if #self.prop_item_list > 0 then for k, v in pairs(self.prop_item_list) do v:DeleteMe() v = nil end end end function ChatDressItem:SetRedPoint() -- self.red_point:SetActive(isTrue)----红点先去除 end