miduo_client/Assets/ManagedResources/~Lua/Modules/Login/ServerListSelectPanel.lua

143 lines
6.0 KiB
Lua
Raw Normal View History

2021-04-20 13:58:00 +08:00
--[[
2020-05-09 13:31:21 +08:00
* @ClassName ServerListSelectPanel
* @Description
* @Date 2019/8/30 14:32
* @Author MagicianJoker, fengliudianshao@outlook.com
* @Copyright Copyright (c) 2019, MagicianJoker
--]]
local ServerListItem = require("Modules/Login/ServerListItem")
---@class ServerListSelectPanel
local ServerListSelectPanel = quick_class("ServerListSelectPanel", BasePanel)
function ServerListSelectPanel:InitComponent()
self.closeBtn = Util.GetGameObject(self.transform, "frame/bg/closeBtn")
self.serverContent = Util.GetGameObject(self.transform, "frame/bg/serverList/mask/content")
self.serverPrototype = Util.GetGameObject(self.serverContent, "serverItemPref")
self.serverPrototype:SetActive(false)
self.serverItemList = {}
---quick Login
self.quickLoginPart = Util.GetGameObject(self.transform, "frame/bg/quickLogin/groupServer")
--newServerPart
self.newServerPart = {
serverItem = Util.GetGameObject(self.quickLoginPart, "serverItemNew"),
areaBelong = Util.GetGameObject(self.quickLoginPart, "serverItemNew/serverArea"):GetComponent("Text"),
serverName = Util.GetGameObject(self.quickLoginPart, "serverItemNew/serverName"):GetComponent("Text"),
serverState = Util.GetGameObject(self.quickLoginPart, "serverItemNew/serverState"):GetComponent("Image"),
newServerFlag = Util.GetGameObject(self.quickLoginPart, "serverItemNew/newServerFlag"),
}
self.newServerPart.serverItem:SetActive(false)
self.serverInfoNew = nil
--recentLogin
self.recentLoginPart = {
serverItem = Util.GetGameObject(self.quickLoginPart, "serverItemRecent"),
areaBelong = Util.GetGameObject(self.quickLoginPart, "serverItemRecent/serverArea"):GetComponent("Text"),
serverName = Util.GetGameObject(self.quickLoginPart, "serverItemRecent/serverName"):GetComponent("Text"),
serverState = Util.GetGameObject(self.quickLoginPart, "serverItemRecent/serverState"):GetComponent("Image"),
playerName = Util.GetGameObject(self.quickLoginPart, "serverItemRecent/playerName"):GetComponent("Text"),
newServerFlag = Util.GetGameObject(self.quickLoginPart, "serverItemRecent/newServerFlag"),
}
self.recentLoginPart.serverItem:SetActive(false)
end
function ServerListSelectPanel:BindEvent()
Util.AddClick(self.closeBtn, function()
self:ClosePanel()
end)
end
--serverList,myServerList,lastServer
function ServerListSelectPanel:OnOpen(context)
self.context = context
self:SetServerList()
self:SetServerNew()
self:SetServerRecent()
end
function ServerListSelectPanel:OnClose()
end
function ServerListSelectPanel:SetServerList()
if table.nums(self.serverItemList) > 0 then
return
end
for idx, serverInfo in ipairs(self.context.serverList) do
local serverItem = ServerListItem.create(self.serverPrototype, self.serverContent.transform)
local index = table.indexof(self.context.myServerList, serverInfo.server_id)
serverItem:SetValue(serverInfo, index)
serverItem:SetVisible(true)
serverItem.cloneObj:GetComponent("Button").onClick:AddListener(function()
if serverInfo.state == ServerStateDef.Maintenance then
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[11142])
2020-05-09 13:31:21 +08:00
return
end
if self.context.callback then
self.context.callback(idx)
end
self:ClosePanel()
end)
table.insert(self.serverItemList, serverItem)
end
end
function ServerListSelectPanel:SetServerNew()
for i = 1, #self.context.serverList do
if self.context.serverList[i].server_id == self.context.recommend then
self.serverInfoNew = self.context.serverList[i]
break
end
end
self.newServerPart.serverItem:SetActive(not not self.context.recommend)
if self.serverInfoNew then
2021-03-02 16:53:12 +08:00
self.newServerPart.areaBelong.text = tonumber(string.sub(self.serverInfoNew.server_id, 0, -5)) .. Language[11138]
2020-05-09 13:31:21 +08:00
self.newServerPart.serverName.text = self.serverInfoNew.name
self.newServerPart.serverState.sprite = Util.LoadSprite(ServerStateIconDef[self.serverInfoNew.state])
self.newServerPart.newServerFlag:SetActive(self.serverInfoNew.isnew == 1)
self:QuickSeverClicked(self.newServerPart.serverItem, self.serverInfoNew.server_id)
end
end
function ServerListSelectPanel:SetServerRecent()
self.recentLoginPart.serverItem:SetActive(not not self.context.lastServer)
if self.context.lastServer then
local serverInfo = self:GetServerInfo(self.context.lastServer.serverid)
if serverInfo then
2021-03-02 16:53:12 +08:00
self.recentLoginPart.areaBelong.text = tonumber(string.sub(self.context.lastServer.serverid, 0, -5)) .. Language[11138]
2020-05-09 13:31:21 +08:00
self.recentLoginPart.serverName.text = serverInfo.name
self.recentLoginPart.serverState.sprite = Util.LoadSprite(ServerStateIconDef[serverInfo.state])
2021-03-02 16:53:12 +08:00
self.recentLoginPart.playerName.text = self.context.lastServer.name .. "\t" .. self.context.lastServer.level .. Language[10065]
2020-05-09 13:31:21 +08:00
self.recentLoginPart.newServerFlag:SetActive(serverInfo.isnew == 1)
self:QuickSeverClicked(self.recentLoginPart.serverItem, self.context.lastServer.serverid)
else
self.recentLoginPart.serverItem:SetActive(false)
end
end
end
function ServerListSelectPanel:QuickSeverClicked(gameObject, serverId)
Util.AddOnceClick(gameObject, function()
if self.context.callback then
self.context.callback(self:GetServerIndex(serverId))
end
self:ClosePanel()
end)
end
function ServerListSelectPanel:GetServerInfo(serverId)
local _serverInfo
for _, serverInfo in pairs(self.context.serverList) do
if serverInfo.server_id == serverId then
_serverInfo = serverInfo
break
end
end
return _serverInfo
end
function ServerListSelectPanel:GetServerIndex(serverId)
return table.keyvalueindexof(self.context.serverList, "server_id", serverId)
end
2020-06-23 18:36:24 +08:00
return ServerListSelectPanel