Server list changes
This commit is contained in:
parent
46454bae4a
commit
6898d6e842
@ -8,9 +8,33 @@ end
|
||||
game:addlocalizedstring("MENU_NUMPLAYERS", "Players")
|
||||
game:addlocalizedstring("MENU_PING", "Ping")
|
||||
|
||||
local offsets = {10, 500, 950, 700, 1100}
|
||||
|
||||
local columns = {"@MENU_HOST_NAME", "@MENU_MAP", "@MENU_NUMPLAYERS", "@MENU_TYPE1", "@MENU_PING"}
|
||||
local columns = {
|
||||
{
|
||||
offset = 10,
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
function textlength(text, font, height)
|
||||
local _, _, width = luiglobals.GetTextDimensions(text, font, height)
|
||||
@ -18,6 +42,10 @@ function textlength(text, font, height)
|
||||
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
|
||||
@ -37,12 +65,10 @@ SystemLinkJoinMenu.AddHeaderButton = function(menu, f12_arg1, width)
|
||||
button:addElement(LUI.Divider.new(CoD.CreateState(nil, 0, nil, nil, CoD.AnchorTypes.BottomLeftRight), 40,
|
||||
LUI.Divider.Grey))
|
||||
|
||||
local gettext = function(i)
|
||||
return Engine.Localize(columns[i])
|
||||
end
|
||||
button.m_eventHandlers = {}
|
||||
|
||||
for i = 1, #offsets do
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, offsets[i], gettext(i), nil)
|
||||
for i = 1, #columns do
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, columns[i].offset, Engine.Localize(columns[i].text), nil)
|
||||
end
|
||||
|
||||
element:addElement(button)
|
||||
@ -56,12 +82,25 @@ SystemLinkJoinMenu.AddServerButton = function(menu, controller, index)
|
||||
button:addEventHandler("button_action", SystemLinkJoinMenu.OnJoinGame)
|
||||
|
||||
local gettext = function(i)
|
||||
local text = Lobby.GetServerData(controller, index, i - 1)
|
||||
return trimtext(text, CoD.TextSettings.TitleFontSmall.Font, 14, 400)
|
||||
local text = Lobby.GetServerData(controller, index, columns[i].dataindex)
|
||||
|
||||
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
|
||||
|
||||
for i = 1, #offsets do
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, offsets[i], gettext(i), luiglobals.Colors.h1.medium_grey)
|
||||
if (not islast) then
|
||||
maxlength = maxlength - 50
|
||||
end
|
||||
|
||||
return trimtext(text, CoD.TextSettings.TitleFontSmall.Font, 14, maxlength)
|
||||
end
|
||||
|
||||
for i = 1, #columns do
|
||||
SystemLinkJoinMenu.MakeText(button.textHolder, columns[i].offset, gettext(i), luiglobals.Colors.h1.medium_grey)
|
||||
end
|
||||
|
||||
menu.list:addElement(button)
|
||||
@ -73,7 +112,7 @@ SystemLinkJoinMenu.MakeText = function(menu, f5_arg1, text, color)
|
||||
state.font = CoD.TextSettings.TitleFontSmall.Font
|
||||
state.top = -6
|
||||
state.height = 14
|
||||
state.alignment = LUI.Alignment.Left
|
||||
state.alignment = nil
|
||||
state.glow = LUI.GlowState.None
|
||||
state.color = color
|
||||
|
||||
@ -116,7 +155,6 @@ function menu_systemlink_join(f19_arg0, f19_arg1)
|
||||
|
||||
SystemLinkJoinMenu.UpdateGameList(menu)
|
||||
menu:registerEventHandler("updateGameList", SystemLinkJoinMenu.UpdateGameList)
|
||||
menu:addElement(LUI.UITimer.new(250, "updateGameList"))
|
||||
|
||||
LUI.ButtonHelperText.ClearHelperTextObjects(menu.help, {
|
||||
side = "all"
|
||||
|
@ -1,24 +1,26 @@
|
||||
#include <std_include.hpp>
|
||||
#include "loader/component_loader.hpp"
|
||||
|
||||
#include "server_list.hpp"
|
||||
#include "localized_strings.hpp"
|
||||
#include "network.hpp"
|
||||
#include "scheduler.hpp"
|
||||
#include "party.hpp"
|
||||
#include "console.hpp"
|
||||
#include "command.hpp"
|
||||
|
||||
#include "game/game.hpp"
|
||||
#include "game/ui_scripting/execution.hpp"
|
||||
|
||||
#include <utils/cryptography.hpp>
|
||||
#include <utils/string.hpp>
|
||||
#include <utils/hook.hpp>
|
||||
|
||||
#include "console.hpp"
|
||||
#include "command.hpp"
|
||||
|
||||
namespace server_list
|
||||
{
|
||||
namespace
|
||||
{
|
||||
const int server_limit = 18;
|
||||
const int server_limit = 100;
|
||||
|
||||
struct server_info
|
||||
{
|
||||
@ -107,11 +109,6 @@ namespace server_list
|
||||
int ui_feeder_count()
|
||||
{
|
||||
std::lock_guard<std::mutex> _(mutex);
|
||||
if (update_server_list)
|
||||
{
|
||||
update_server_list = false;
|
||||
return 0;
|
||||
}
|
||||
const auto count = static_cast<int>(servers.size());
|
||||
const auto index = get_page_base_index();
|
||||
const auto diff = count - index;
|
||||
@ -272,6 +269,15 @@ namespace server_list
|
||||
|
||||
lui_open_menu_hook.invoke<void>(controllerIndex, menuName, isPopup, isModal, isExclusive);
|
||||
}
|
||||
|
||||
void check_refresh()
|
||||
{
|
||||
if (update_server_list)
|
||||
{
|
||||
update_server_list = false;
|
||||
ui_scripting::notify("updateGameList", {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool sl_key_event(const int key, const int down)
|
||||
@ -430,6 +436,7 @@ namespace server_list
|
||||
}), true);
|
||||
|
||||
scheduler::loop(do_frame_work, scheduler::pipeline::main);
|
||||
scheduler::loop(check_refresh, scheduler::pipeline::lui, 10ms);
|
||||
|
||||
network::on("getServersResponse", [](const game::netadr_s& target, const std::string_view& data)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user