add new data directory, and update updater
This commit is contained in:
6
data/cdata/ui_scripts/server_list/__init__.lua
Normal file
6
data/cdata/ui_scripts/server_list/__init__.lua
Normal file
@ -0,0 +1,6 @@
|
||||
if (not LUI.mp_menus) then
|
||||
return
|
||||
end
|
||||
|
||||
require("lobby")
|
||||
require("serverlist")
|
87
data/cdata/ui_scripts/server_list/lobby.lua
Normal file
87
data/cdata/ui_scripts/server_list/lobby.lua
Normal file
@ -0,0 +1,87 @@
|
||||
local Lobby = luiglobals.Lobby
|
||||
local MPLobbyOnline = LUI.mp_menus.MPLobbyOnline
|
||||
|
||||
function LeaveLobby(f5_arg0)
|
||||
LeaveXboxLive()
|
||||
if Lobby.IsInPrivateParty() == false or Lobby.IsPrivatePartyHost() then
|
||||
LUI.FlowManager.RequestLeaveMenuByName("menu_xboxlive")
|
||||
Engine.ExecNow("clearcontrollermap")
|
||||
end
|
||||
end
|
||||
|
||||
function menu_xboxlive(f16_arg0, f16_arg1)
|
||||
local menu = LUI.MPLobbyBase.new(f16_arg0, {
|
||||
menu_title = "@PLATFORM_UI_HEADER_PLAY_MP_CAPS",
|
||||
memberListState = Lobby.MemberListStates.Prelobby
|
||||
})
|
||||
|
||||
menu:setClass(LUI.MPLobbyOnline)
|
||||
|
||||
local serverListButton = menu:AddButton("@LUA_MENU_SERVERLIST", function(a1, a2)
|
||||
LUI.FlowManager.RequestAddMenu(a1, "menu_systemlink_join", true, nil)
|
||||
end)
|
||||
serverListButton:setDisabledRefreshRate(500)
|
||||
if Engine.IsCoreMode() then
|
||||
menu:AddCACButton()
|
||||
menu:AddBarracksButton()
|
||||
menu:AddPersonalizationButton()
|
||||
menu:AddDepotButton()
|
||||
|
||||
-- kinda a weird place to do this, but it's whatever
|
||||
-- add "MODS" button below depot button
|
||||
local modsButton = menu:AddButton("@MENU_MODS", function(a1, a2)
|
||||
LUI.FlowManager.RequestAddMenu(a1, "mods_menu", true, nil)
|
||||
end)
|
||||
end
|
||||
|
||||
local privateMatchButton = menu:AddButton("@MENU_PRIVATE_MATCH", MPLobbyOnline.OnPrivateMatch,
|
||||
MPLobbyOnline.disablePrivateMatchButton)
|
||||
privateMatchButton:rename("menu_xboxlive_private_match")
|
||||
privateMatchButton:setDisabledRefreshRate(500)
|
||||
if not Engine.IsCoreMode() then
|
||||
local leaderboardButton = menu:AddButton("@LUA_MENU_LEADERBOARD", "OpLeaderboardMain")
|
||||
leaderboardButton:rename("OperatorMenu_leaderboard")
|
||||
end
|
||||
|
||||
menu:AddOptionsButton()
|
||||
local natType = Lobby.GetNATType()
|
||||
if natType then
|
||||
local natTypeText = Engine.Localize("NETWORK_YOURNATTYPE", natType)
|
||||
local properties = CoD.CreateState(nil, nil, 2, -62, CoD.AnchorTypes.BottomRight)
|
||||
properties.width = 250
|
||||
properties.height = CoD.TextSettings.BodyFontVeryTiny.Height
|
||||
properties.font = CoD.TextSettings.BodyFontVeryTiny.Font
|
||||
properties.color = luiglobals.Colors.white
|
||||
properties.alpha = 0.25
|
||||
local self = LUI.UIText.new(properties)
|
||||
self:setText(natTypeText)
|
||||
menu:addElement(self)
|
||||
end
|
||||
|
||||
menu.isSignInMenu = true
|
||||
menu:registerEventHandler("gain_focus", LUI.MPLobbyOnline.OnGainFocus)
|
||||
menu:registerEventHandler("player_joined", luiglobals.Cac.PlayerJoinedEvent)
|
||||
menu:registerEventHandler("exit_live_lobby", LeaveLobby)
|
||||
|
||||
if Engine.IsCoreMode() then
|
||||
Engine.ExecNow("eliteclan_refresh", Engine.GetFirstActiveController())
|
||||
end
|
||||
|
||||
local root = Engine.GetLuiRoot()
|
||||
if (root.vltimer) then
|
||||
root.vltimer:close()
|
||||
end
|
||||
|
||||
root.vltimer = LUI.UITimer.new(4000, "vl")
|
||||
root:addElement(root.vltimer)
|
||||
root:registerEventHandler("vl", function()
|
||||
if (Engine.GetDvarBool("virtualLobbyReady")) then
|
||||
root.vltimer:close()
|
||||
game:virtuallobbypresentable()
|
||||
end
|
||||
end)
|
||||
|
||||
return menu
|
||||
end
|
||||
|
||||
LUI.MenuBuilder.m_types_build["menu_xboxlive"] = menu_xboxlive
|
258
data/cdata/ui_scripts/server_list/serverlist.lua
Normal file
258
data/cdata/ui_scripts/server_list/serverlist.lua
Normal file
@ -0,0 +1,258 @@
|
||||
local Lobby = luiglobals.Lobby
|
||||
local SystemLinkJoinMenu = LUI.mp_menus.SystemLinkJoinMenu
|
||||
|
||||
if (not SystemLinkJoinMenu) then
|
||||
return
|
||||
end
|
||||
|
||||
local columns = {
|
||||
{
|
||||
offset = 40,
|
||||
text = "@MENU_HOST_NAME",
|
||||
dataindex = 0
|
||||
},
|
||||
{
|
||||
offset = 500,
|
||||
text = "@MENU_MAP",
|
||||
dataindex = 1
|
||||
},
|
||||
{
|
||||
offset = 700,
|
||||
text = "@MENU_TYPE1",
|
||||
dataindex = 3
|
||||
},
|
||||
{
|
||||
offset = 950,
|
||||
text = "@MENU_NUMPLAYERS",
|
||||
dataindex = 2
|
||||
},
|
||||
{
|
||||
offset = 1100,
|
||||
text = "@MENU_PING",
|
||||
dataindex = 4
|
||||
},
|
||||
{
|
||||
offset = 10,
|
||||
image = "s1_icon_locked",
|
||||
customelement = function(value, offset)
|
||||
return LUI.UIImage.new({
|
||||
leftAnchor = true,
|
||||
topAnchor = true,
|
||||
height = 20,
|
||||
width = 20,
|
||||
left = offset,
|
||||
top = 2,
|
||||
material = RegisterMaterial(CoD.Material.RestrictedIcon),
|
||||
alpha = value == "1" and 1 or 0,
|
||||
color = {
|
||||
r = 1,
|
||||
b = 1,
|
||||
g = 1
|
||||
}
|
||||
})
|
||||
end,
|
||||
dataindex = 5
|
||||
}
|
||||
}
|
||||
|
||||
function textlength(text, font, height)
|
||||
local _, _, width = luiglobals.GetTextDimensions(text, font, height)
|
||||
return width
|
||||
end
|
||||
|
||||
function trimtext(text, font, height, maxwidth)
|
||||
if (maxwidth < 0) then
|
||||
return text
|
||||
end
|
||||
|
||||
while (textlength(text, font, height) > maxwidth) do
|
||||
text = text:sub(1, #text - 1)
|
||||
end
|
||||
|
||||
return text
|
||||
end
|
||||
|
||||
SystemLinkJoinMenu.AddHeaderButton = function(menu, f12_arg1, width)
|
||||
local state = CoD.CreateState(0, f12_arg1, nil, nil, CoD.AnchorTypes.TopLeft)
|
||||
state.width = width
|
||||
local element = LUI.UIElement.new(state)
|
||||
local button = SystemLinkJoinMenu.CreateButton("header", 24)
|
||||
|
||||
button:addElement(LUI.Divider.new(CoD.CreateState(nil, 0, nil, nil, CoD.AnchorTypes.TopLeftRight), 40,
|
||||
LUI.Divider.Grey))
|
||||
button:makeNotFocusable()
|
||||
button:addElement(LUI.Divider.new(CoD.CreateState(nil, 0, nil, nil, CoD.AnchorTypes.BottomLeftRight), 40,
|
||||
LUI.Divider.Grey))
|
||||
|
||||
button.m_eventHandlers = {}
|
||||
|
||||
for i = 1, #columns do
|
||||
if (columns[i].text) then
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, columns[i].offset, Engine.Localize(columns[i].text), nil)
|
||||
elseif (columns[i].image) then
|
||||
local image = LUI.UIImage.new({
|
||||
leftAnchor = true,
|
||||
topAnchor = true,
|
||||
height = 20,
|
||||
width = 20,
|
||||
top = 2,
|
||||
left = columns[i].offset,
|
||||
material = RegisterMaterial(columns[i].image)
|
||||
})
|
||||
button.textHolder:addElement(image)
|
||||
end
|
||||
end
|
||||
|
||||
element:addElement(button)
|
||||
menu:addElement(element)
|
||||
end
|
||||
|
||||
SystemLinkJoinMenu.AddServerButton = function(menu, controller, index)
|
||||
local button = SystemLinkJoinMenu.CreateButton(index or "header", 24)
|
||||
button:makeFocusable()
|
||||
button.index = index
|
||||
button:addEventHandler("button_action", SystemLinkJoinMenu.OnJoinGame)
|
||||
|
||||
local gettext = function(i)
|
||||
local text = Lobby.GetServerData(controller, index, columns[i].dataindex)
|
||||
if (columns[i].customelement) then
|
||||
text = columns[i].customelement(text)
|
||||
end
|
||||
|
||||
local islast = not columns[i + 1]
|
||||
local end_ = islast and 1130 or columns[i + 1].offset
|
||||
local maxlength = end_ - columns[i].offset
|
||||
|
||||
if (maxlength < 0) then
|
||||
maxlength = columns[i].offset - end_
|
||||
end
|
||||
|
||||
if (not islast) then
|
||||
maxlength = maxlength - 50
|
||||
end
|
||||
|
||||
return trimtext(text, CoD.TextSettings.TitleFontSmall.Font, 14, maxlength)
|
||||
end
|
||||
|
||||
for i = 1, #columns do
|
||||
if (columns[i].customelement) then
|
||||
local value = Lobby.GetServerData(controller, index, columns[i].dataindex)
|
||||
local element = columns[i].customelement(value, columns[i].offset)
|
||||
button.textHolder:addElement(element)
|
||||
else
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, columns[i].offset, gettext(i), luiglobals.Colors.h1.medium_grey)
|
||||
end
|
||||
end
|
||||
|
||||
menu.list:addElement(button)
|
||||
return button
|
||||
end
|
||||
|
||||
SystemLinkJoinMenu.MakeText = function(menu, f5_arg1, text, color)
|
||||
local state = CoD.CreateState(f5_arg1, nil, f5_arg1 + 200, nil, CoD.AnchorTypes.Left)
|
||||
state.font = CoD.TextSettings.TitleFontSmall.Font
|
||||
state.top = -6
|
||||
state.height = 14
|
||||
state.alignment = nil
|
||||
state.glow = LUI.GlowState.None
|
||||
state.color = color
|
||||
|
||||
local el = LUI.UIText.new(state)
|
||||
el:registerAnimationState("focused", {
|
||||
color = luiglobals.Colors.white
|
||||
})
|
||||
|
||||
el:registerEventHandler("focused", function(element, event)
|
||||
element:animateToState("focused", 0)
|
||||
end)
|
||||
|
||||
el:registerEventHandler("unfocused", function(element, event)
|
||||
element:animateToState("default", 0)
|
||||
end)
|
||||
|
||||
el:setText(text)
|
||||
menu:addElement(el)
|
||||
|
||||
return el
|
||||
end
|
||||
|
||||
function menu_systemlink_join(f19_arg0, f19_arg1)
|
||||
local width = 1145
|
||||
|
||||
local menu = LUI.MenuTemplate.new(f19_arg0, {
|
||||
menu_title = "@PLATFORM_SYSTEM_LINK_TITLE",
|
||||
menu_width = width,
|
||||
menu_top_indent = 20,
|
||||
disableDeco = true,
|
||||
spacing = 1
|
||||
})
|
||||
|
||||
SystemLinkJoinMenu.AddHeaderButton(menu, 80, width)
|
||||
SystemLinkJoinMenu.AddLowerCounter(menu, width)
|
||||
SystemLinkJoinMenu.UpdateCounterText(menu, nil)
|
||||
Lobby.BuildServerList(Engine.GetFirstActiveController())
|
||||
|
||||
local playercount = LUI.UIText.new({
|
||||
rightAnchor = true,
|
||||
topAnchor = true,
|
||||
height = 18,
|
||||
bottom = 58,
|
||||
font = CoD.TextSettings.BodyFont.Font,
|
||||
width = 300,
|
||||
alignment = LUI.Alignment.Right,
|
||||
})
|
||||
menu:addElement(playercount)
|
||||
|
||||
local servercount = LUI.UIText.new({
|
||||
rightAnchor = true,
|
||||
topAnchor = true,
|
||||
height = 18,
|
||||
bottom = 58 - 25,
|
||||
font = CoD.TextSettings.BodyFont.Font,
|
||||
width = 300,
|
||||
alignment = LUI.Alignment.Right,
|
||||
})
|
||||
menu:addElement(servercount)
|
||||
|
||||
menu.list:registerEventHandler(LUI.UIScrollIndicator.UpdateEvent, function(element, event)
|
||||
SystemLinkJoinMenu.UpdateCounterText(menu, event)
|
||||
|
||||
playercount:setText(Engine.Localize("@SERVERLIST_PLAYER_COUNT", serverlist:getplayercount()))
|
||||
servercount:setText(Engine.Localize("@SERVERLIST_SERVER_COUNT", serverlist:getservercount()))
|
||||
end)
|
||||
|
||||
SystemLinkJoinMenu.UpdateGameList(menu)
|
||||
menu:registerEventHandler("updateGameList", SystemLinkJoinMenu.UpdateGameList)
|
||||
|
||||
LUI.ButtonHelperText.ClearHelperTextObjects(menu.help, {
|
||||
side = "all"
|
||||
})
|
||||
|
||||
menu:AddHelp({
|
||||
name = "add_button_helper_text",
|
||||
button_ref = "button_alt1",
|
||||
helper_text = Engine.Localize("@MENU_SB_TOOLTIP_BTN_REFRESH"),
|
||||
side = "right",
|
||||
clickable = true,
|
||||
priority = -1000
|
||||
}, function(f21_arg0, f21_arg1)
|
||||
SystemLinkJoinMenu.RefreshServers(f21_arg0, f21_arg1, menu)
|
||||
end)
|
||||
|
||||
menu:AddHelp({
|
||||
name = "add_button_helper_text",
|
||||
button_ref = "button_action",
|
||||
helper_text = Engine.Localize("@MENU_JOIN_GAME1"),
|
||||
side = "left",
|
||||
clickable = false,
|
||||
priority = -1000
|
||||
}, nil, nil, true)
|
||||
|
||||
menu:AddBackButton()
|
||||
|
||||
Lobby.RefreshServerList(Engine.GetFirstActiveController())
|
||||
|
||||
return menu
|
||||
end
|
||||
|
||||
LUI.MenuBuilder.m_types_build["menu_systemlink_join"] = menu_systemlink_join
|
Reference in New Issue
Block a user