---@class KLUIChatItem:UIKmlLuaPanelBase ---@field view KLUIChatItemView local KLUIChatItem = class(UIKmlLuaPanelBase) local this = KLUIChatItem ---创建时调用一次 function this:Init() end ---创建或者刷新界面数据时调用 function this:Refresh() end function this:RefreshItem(data) if not SL:MeData_Check() then return end self.message = data.message self.itemIndex = data.itemIndex --self.data.sendName local is_union_system = false if self.message.channel == EChatChannelType.UNION and (not self.message.senderId or self.message.senderId == 0) then is_union_system = true end if not self.message.career then self.message.career = 0 end if not self.message.sendName then self.message.sendName = "" end local is_me = false if self.message.senderId == SL:GetMetaValue(EMetaVarGetKey.UID) then is_me = true end local career = self.message.career local careerStr local channel = self.message.channel if channel == EChatChannelType.PERSONAL then local isFriend = false if is_me then isFriend = SL:CheckIsFriend(self.message.receiverId) else isFriend = SL:CheckIsFriend(self.message.senderId) end if isFriend then channel = EChatChannelType.FRIEND end end local typeStr = SL:ChatInfo_GetChatTypeStr(channel) local typeTitleStr = self:GetTypeTitle(typeStr,channel) local str = typeTitleStr if channel ~= EChatChannelType.SYSTEM and not is_union_system then local career = self.message.career careerStr = "1"..career str = typeTitleStr.. self.message.sendName end if is_me and channel ~= EChatChannelType.SYSTEM then GUI:setAnchorPoint(self.view.icon_root,2,1) GUI:setAnchorPoint(self.view.name,2,1) GUI:setAnchorPoint(self.view.qipao,2,1) GUI:setPositionX(self.view.name,-75) GUI:setPositionX(self.view.qipao,-70) GUI:Image_loadTexture(self.view.qipao,"img_chat_pao2","Atlas/KLChatPanel.spriteatlas") GUI:setAnchorPoint(self.view.richT,2,0) GUI:setPositionX(self.view.richT,-13) else GUI:setAnchorPoint(self.view.icon_root,1,1) GUI:setAnchorPoint(self.view.name,1,1) GUI:setAnchorPoint(self.view.qipao,1,1) GUI:setPositionX(self.view.name,75) GUI:setPositionX(self.view.qipao,70) GUI:Image_loadTexture(self.view.qipao,"img_chat_pao","Atlas/KLChatPanel.spriteatlas") GUI:setAnchorPoint(self.view.richT,1,0) GUI:setPositionX(self.view.richT,13) end GUI:Text_setString(self.view.name,str) if channel == EChatChannelType.SYSTEM or is_union_system then GUI:setVisible(self.view.icon_root,false) GUI:setPositionX(self.view.name,10) GUI:setPositionX(self.view.qipao,12) else GUI:Image_loadTexture(self.view.icon,careerStr,"Atlas/MUIcon.spriteatlas") GUI:setVisible(self.view.icon_root,true) end if not self.message.chatiteminfo and self.message.itemList and #self.message.itemList >0 then local chatiteminfo = "" for i, v in ipairs(self.message.itemList) do local item = SL:GetConfig("cfg_item", v.cfgId) local name_color = "#d2d2d2" if item.type == EItemType.Equip then -- local grade = SL:GetEquipValue(EMetaVarGetKey.EQUIP_GRADE, "", v.cfgId) -- local colorid = SL:GetConfigMultiKeys('cfg_equip_quality', grade, 'id').nameColor -- name_color = SL:GetConfigMultiKeys('cfg_color', colorid, 'id').color --不读品质了,全部走配置 local colorid = SL:GetConfig('cfg_item', v.cfgId).color name_color = SL:GetConfig('cfg_color', colorid).color else local colorid = SL:GetConfig('cfg_item', v.cfgId).color name_color = SL:GetConfig('cfg_color', colorid).color end local oneStr = "" if i ~= 1 then oneStr = "|" end oneStr = oneStr .. v.id .. "*" .. v.cfgId .. "*" .. name_color chatiteminfo = chatiteminfo .. oneStr SL:ChatInfo_AddChaItemInfo(v) end self.message.chatiteminfo = chatiteminfo end -- SL:LogError(self.message.message) -- SL:LogTable(self.message.chatiteminfo) GUI:RichText_setchatiteminfo(self.view.richT,self.message.chatiteminfo) GUI:Text_setString(self.view.richT,self.message.message) local playerid = "" if self.message.senderId and self.message.senderId~=0 then playerid = tostring(self.message.senderId) end GUI:RichText_setchatplayerid(self.view.richT,playerid) end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.icon,self,self.OnclickIcon) end function this:GetTypeTitle(typeStr,channel) if channel == EChatChannelType.SYSTEM then return "[".. typeStr.."]" elseif channel == EChatChannelType.WORLD then return "[".. typeStr.."]" elseif channel == EChatChannelType.NEARBY then return "[".. typeStr.."]" elseif channel == EChatChannelType.UNION then return "[".. typeStr.."]" elseif channel == EChatChannelType.TEAM then return "[".. typeStr.."]" elseif channel == EChatChannelType.FRIEND then return "[".. typeStr.."]" elseif channel == EChatChannelType.PERSONAL then return "[".. typeStr.."]" elseif channel == EChatChannelType.RECRUIT then return "[".. typeStr.."]" end return "[".. typeStr.."]" end function this:OnclickIcon() local id = self.message.senderId if id == SL:GetMetaValue(EMetaVarGetKey.UID) then return end local _x,_y,_z = GUI:GetWorldPosition(self.view.icon_root) _x = math.floor(_x * 100) / 100 _y = math.floor(_y * 100) / 100 _z = math.floor(_z * 100) / 100 if _y < 359.1 then _y = 359.1 end GUI:UIPanel_Open("dev/ui/FriendSys/Panel/KLFriendOperate/KLFriendOperatePanel", _, _, {rid = id,pos={x=_x+4.9,y=_y-2.3,z=_z},name = self.message.sendName,isHideMainUI=true}) end function this:Close() end return this