2025-06-04 05:12:01 +08:00

127 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ChatSimplifyView = class("ChatSimplifyView", SubView)
local dotNormal = Color(1,1,1,0.5)
--initParama包括gameObject, chatCellCtrl, chatCellPfb
function ChatSimplifyView:Init(initParama)
self.gameObject = initParama.gameObject
self:FindObj()
self:AddEvt()
self:AddViewEvt()
self:InitShow(initParama)
end
function ChatSimplifyView:FindObj()
self.chatGrid = self:FindGO("ChatGrid"):GetComponent(UIGrid)
self.chatCenterOnChild = self.chatGrid.gameObject:GetComponent("UICenterOnChild")
end
function ChatSimplifyView:AddEvt()
self.chatCenterOnChild.onCenter = function (centeredObject)
self.lastDotSp.color = dotNormal
for i=1,#self.chatCtl:GetCells() do
local cell = self.chatCtl:GetCells()[i]
if cell.gameObject == centeredObject then
local dot = self.chatInfoList[cell.data].dot
ColorUtil.WhiteUIWidget(dot)
self.lastDotSp = dot
ChatRoomProxy.Instance:SetCurrentChatChannel(cell.data)
return
end
end
end
end
function ChatSimplifyView:AddViewEvt()
self:AddListenEvt(ServiceEvent.ChatCmdChatRetCmd,self.UpdateChatRoom)
self:AddListenEvt(ChatRoomEvent.ChangeChannel,self.ChangeChannel)
self:AddListenEvt(ChatRoomEvent.SystemMessage,self.UpdateChatRoom)
end
function ChatSimplifyView:InitShow(initParama)
self.chatInfoList = {}
self.chatCtl = UIGridListCtrl.new(self.chatGrid, initParama.chatCellCtrl, initParama.chatCellPfb)
self:UpdateChat()
for i=1,#self.chatCtl:GetCells() do
local cell = self.chatCtl:GetCells()[i]
local channel = GameConfig.ChatRoom.MainView[i]
if channel then
if self.chatInfoList[channel] == nil then
self.chatInfoList[channel] = {}
end
self.chatInfoList[channel].cell = cell
end
end
-- 點
local dotTable = self:FindGO("DotTable"):GetComponent(UITable)
local dotAll = self:FindGO("ChatDotCell1"):GetComponent(UISprite)
self.chatInfoList[ChatChannelEnum.All].dot = dotAll
for i=2,#GameConfig.ChatRoom.MainView do
local name = "ChatDotCell"
local dot = self:LoadCellPfb(name, name..i, dotTable.gameObject)
local dotSprite = dot:GetComponent(UISprite)
local channel = GameConfig.ChatRoom.MainView[i]
self.chatInfoList[channel].dot = dotSprite
end
dotTable:Reposition()
ColorUtil.WhiteUIWidget(dotAll)
self.lastDotSp = dotAll
end
function ChatSimplifyView:UpdateChat()
self.chatCtl:ResetDatas(GameConfig.ChatRoom.MainView)
end
function ChatSimplifyView:UpdateChatRoom(note)
if note then
local data = note.body
if data then
self:UpdateChatByChannel(data:GetChannel())
end
end
end
function ChatSimplifyView:UpdateChatByChannel(channel)
local cellList = self.chatCtl:GetCells()
cellList[1]:SetData(GameConfig.ChatRoom.MainView[1])
for i=1,#cellList do
local cell = cellList[i]
if cell.data and cell.data == channel then
cell:Update()
end
end
end
function ChatSimplifyView:ChangeChannel()
local channel = ChatRoomProxy.Instance:GetScrollScreenChannel()
local cell = self:GetCellByChannel(channel)
if cell then
self.chatCenterOnChild:CenterOn(cell.trans)
end
end
function ChatSimplifyView:GetCellByChannel(channel)
if self.chatInfoList[channel] then
return self.chatInfoList[channel].cell
end
return nil
end
function ChatSimplifyView:LoadCellPfb(cellPfb, cName, parent)
local cellpfb = Game.AssetManager_UI:CreateAsset(ResourcePathHelper.UICell(cellPfb))
cellpfb.transform:SetParent(parent.transform, false)
cellpfb.name = cName
return cellpfb
end