65 lines
1.6 KiB
Plaintext
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 |