ro-table/Asstes/Resources/Script/FrameWork/GUI/cell/ChatRoomCombineCell.txt
2025-06-04 05:02:57 +08:00

65 lines
1.6 KiB
Plaintext

autoImport("ChatRoomMySelfCell")
autoImport("ChatRoomSomeoneCell")
autoImport("ChatRoomSystemCell")
local baseCell = autoImport("BaseCell")
ChatRoomCombineCell = class("ChatRoomCombineCell", baseCell)
function ChatRoomCombineCell:Init()
self:InitShow()
end
function ChatRoomCombineCell:InitShow()
self.controlMap = {}
self.controlMap[ChatTypeEnum.MySelfMessage] = ChatRoomMySelfCell
self.controlMap[ChatTypeEnum.SomeoneMessage] = ChatRoomSomeoneCell
self.controlMap[ChatTypeEnum.SystemMessage] = ChatRoomSystemCell
self.cellMap = {}
end
function ChatRoomCombineCell:SetData(data)
self.data = data
if data then
local type = data:GetCellType()
local control = self.controlMap[type]
if control then
if self.cellMap[type] == nil then
self.cellMap[type] = control.CreateAsTable(self.gameObject)
self.cellMap[type]:AddEventListener(self.eventType, self.handler, self.handlerOwner)
end
local cell = self.cellMap[type]
cell:SetData(data)
if self.lastCell and self.lastCell ~= cell then
self.lastCell.gameObject:SetActive(false)
end
self.lastCell = cell
end
else
for k,v in pairs(self.cellMap) do
v.gameObject:SetActive(false)
end
self.lastCell = nil
end
end
function ChatRoomCombineCell:CheckMoveToFirst()
if self.lastCell then
return self.lastCell.top.isVisible or false
end
end
function ChatRoomCombineCell:AddEventListener(eventType, handler, handlerOwner)
self.eventType = eventType
self.handler = handler
self.handlerOwner = handlerOwner
end
function ChatRoomCombineCell:GetCurrentCell()
return self.lastCell
end