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