127 lines
3.3 KiB
Plaintext
127 lines
3.3 KiB
Plaintext
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 |