2025-06-04 05:02:57 +08:00

219 lines
6.8 KiB
Plaintext

SelectServerPanel = class("SelectServerPanel",BaseView)
autoImport('ServerItemCell')
autoImport("ServerStCell")
autoImport("RegionCell")
SelectServerPanel.ViewType = UIViewType.PopUpLayer
SelectServerPanel.ServerSt = {}
SelectServerPanel.ServerConfig = {
Normal = 1,
Crowd = 2,
Hot = 3,
Maintain = 0,
}
SelectServerPanel.ServerSt = {
{id = SelectServerPanel.ServerConfig.Normal,name = ZhString.SelectServerPanel_StateNormal},
{id = SelectServerPanel.ServerConfig.Crowd,name = ZhString.SelectServerPanel_StateCrowd},
{id = SelectServerPanel.ServerConfig.Hot,name = ZhString.SelectServerPanel_StateHot},
{id = SelectServerPanel.ServerConfig.Maintain,name = ZhString.SelectServerPanel_StateMaintain},
}
local tempVector3 = LuaVector3.zero
function SelectServerPanel:Init()
self:initView();
self:initData();
self:addViewEventListener()
end
function SelectServerPanel:initView()
-- self.serverContainer = GameObjectUtil.Instance:DeepFindChild(self.gameObject,"Container").transform;
-- self.serverPfb = GameObjectUtil.Instance:DeepFindChild(self.gameObject,"ServerPfb");
self.serversGrid = self:FindGO("allServers"):GetComponent(UIGrid);
self.serverList = UIGridListCtrl.new(self.serversGrid, ServerItemCell, "ServerItemCell")
self.serverList:AddEventListener(MouseEvent.MouseClick,self.serverCellClick,self)
local panelTitle = self:FindGO("panelTitle"):GetComponent(UILabel)
panelTitle.text = ZhString.SelectServerPanel_PanelTitle
self.serverStGrid = self:FindGO("serverStGrid"):GetComponent(UIGrid)
self.serverStGrid = UIGridListCtrl.new(self.serverStGrid,ServerStCell,"ServerStCell")
self.RegionGrid = self:FindGO("RegionGrid"):GetComponent(UIGrid)
self.RegionGrid = UIGridListCtrl.new(self.RegionGrid,RegionCell,"RegionCell")
self.RegionGrid:AddEventListener(MouseEvent.MouseClick,self.regionCellClick,self)
local recentLoginTitle = self:FindGO("recentLoginTitle"):GetComponent(UILabel)
recentLoginTitle.text = ZhString.SelectServerPanel_RecentLogin
local hasRolesTitle = self:FindGO("hasRolesTitle"):GetComponent(UILabel)
hasRolesTitle.text = ZhString.SelectServerPanel_HasRoles
local recentLoginGrid = self:FindGO("recentLoginGrid"):GetComponent(UIGrid)
self.recentGrid = UIGridListCtrl.new(recentLoginGrid,ServerItemCell,"ServerItemCell")
self.recentGrid:AddEventListener(MouseEvent.MouseClick,self.serverCellClick,self)
local recentLogin = self:FindGO("recentLogin")
local hasRoles = self:FindGO("hasRoles")
local bound = NGUIMath.CalculateRelativeWidgetBounds(recentLogin.transform)
local y = bound.size.y
local _,posY,_ = LuaGameObject.GetLocalPosition(recentLogin.transform)
y = posY - y
local x,_,z = LuaGameObject.GetLocalPosition(hasRoles.transform)
tempVector3:Set(x,y-30,z)
hasRoles.transform.localPosition = tempVector3
self:Hide(hasRoles)
local hasRolesGrid = self:FindGO("hasRolesGrid"):GetComponent(UIGrid)
self.hasRolesGrid = UIGridListCtrl.new(hasRolesGrid,ServerItemCell,"ServerItemCell")
self.hasRolesGrid:AddEventListener(MouseEvent.MouseClick,self.serverCellClick,self)
local RegionCellHolder = self:FindGO("RegionCellHolder")
RegionCellHolder = Game.AssetManager_UI:CreateAsset(ResourcePathHelper.UICell("RegionCell"), RegionCellHolder);
tempVector3:Set(0,0,0)
RegionCellHolder.transform.localPosition = tempVector3
self.myRegionCell = RegionCell.new(RegionCellHolder)
local data = {}
data.type = 1
data.name = ZhString.SelectServerPanel_MyServer
self.myRegionCell:SetData(data)
self.myRegionCell:AddEventListener(MouseEvent.MouseClick,self.regionCellClick,self)
self.myServers = self:FindGO("myServers")
self.scrollview = self:FindGO("ScrollView"):GetComponent(UIScrollView);
self.leftContent = self:FindGO("leftContent")
self.Bg = self:FindComponent("Bg",UISprite)
end
function SelectServerPanel:serverCellClick( cellCtl )
-- body
self:sendNotification(ServiceEvent.ChooseServer, cellCtl.data)
self:CloseSelf()
end
function SelectServerPanel:regionCellClick( child )
-- body
--click region
-- printGreen("click")
if(not child)then
return
end
local data = child.data
if(data.type == 1)then
self.myRegionCell:setIsSelected(true)
self:Show(self.myServers)
self:Hide(self.serversGrid.gameObject)
else
self.myRegionCell:setIsSelected(false)
self:Hide(self.myServers)
self:Show(self.serversGrid.gameObject)
end
local cells = self.RegionGrid:GetCells()
for i=1,#cells do
local single = cells[i]
if(single ~= child)then
single:setIsSelected(false)
else
single:setIsSelected(true)
self.serverList:ResetDatas(data.list)
end
end
end
function SelectServerPanel:initRightContent()
local recentList = {}
local serverData
if(sdkEnable)then
serverData = FunctionLogin.Me():getDefaultServerData()
else
serverData = Table_ServerList[self.viewdata.index]
end
if(serverData)then
table.insert(recentList,serverData)
end
self.recentGrid:ResetDatas(recentList)
self.serverStGrid:ResetDatas(SelectServerPanel.ServerSt)
end
function SelectServerPanel:initLeftContent()
local list = {}
local sdkEnable = FunctionLogin.Me():getSdkEnable()
local servers
if (sdkEnable) then
servers = FunctionLogin.Me():getServerDatas()
else
servers = Table_ServerList
end
local count = #servers % 10 == 0 and #servers / 10 or math.floor(#servers / 10) + 1
for i = 1, count do
data = {}
data.type = 2
data.state = SelectServerPanel.ServerConfig.Normal
data.isNew = true
local name = ((i - 1) * 10 + 1) .. "-"
local LCount = 0
if (i * 10 > #servers) then
name = name .. #servers
LCount = #servers
else
name = name .. (i * 10)
LCount = 10 * i
end
data.name = name .. ZhString.SelectServerPanel_Region
local tmpList = {}
for j = (i - 1) * 10 + 1, LCount do
table.insert(tmpList, servers[j])
end
data.list = tmpList
table.insert(list, data)
end
self.RegionGrid:ResetDatas(list)
if (#list >= 1) then
self.Bg.width = 1080
self:Show(self.leftContent)
self:regionCellClick(self.myRegionCell)
else
self.Bg.width = 1074
self:Hide(self.leftContent)
self:regionCellClick(self.myRegionCell)
end
self.scrollview:ResetPosition();
end
function SelectServerPanel:initData()
local sdkEnable = FunctionLogin.Me():getSdkEnable( )
local servers
if(sdkEnable)then
servers = FunctionLogin.Me():getServerDatas()
else
servers = Table_ServerList
end
if(not servers)then
return
end
self:initLeftContent()
self:initRightContent()
-- local cells = self.serverList:GetCells()
-- for i=1,#cells do
-- local single = cells[i]
-- if(single.data.id == self.viewdata.index)then
-- single:SetCurrentServer(true)
-- break
-- end
-- end
end
function SelectServerPanel:addViewEventListener( )
-- body
end
function SelectServerPanel:OnExit( )
-- body
end