Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -346,6 +346,9 @@ cursorblinkrate = 0.5 ; Cursor blink rate in seconds (0.0 to disable blinking) scale = 1.0 ; GUI scaling factor, for improved compatibility with 4K displays +[gui.lobby] +morebuttonsbar = "hiding" ; Show more buttons bar below chat input "disabled", "hiding" or "visible". + [gui.gamesetup] enabletips = true ; Enable/Disable tips during gamesetup (for newcomers) assignplayers = everyone ; Whether to assign joining clients to free playerslots. Possible values: everyone, buddies, disabled. Index: binaries/data/mods/public/gui/gamesetup/gamesetup.xml =================================================================== --- binaries/data/mods/public/gui/gamesetup/gamesetup.xml +++ binaries/data/mods/public/gui/gamesetup/gamesetup.xml @@ -188,14 +188,14 @@ - + - + submitChatInput(); autoCompleteNick(this, g_Autocomplete); - + Send submitChatInput(); Index: binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- binaries/data/mods/public/gui/lobby/lobby.js +++ binaries/data/mods/public/gui/lobby/lobby.js @@ -111,6 +111,19 @@ var g_Kicked = false; /** + * List of more buttons bar below the chat input. + */ +var g_MoreButtonsBarFuncs = { + "Replays": () => Engine.PushGuiPage("page_replaymenu.xml", { "callback": "startReplay" }), + "Last Summary": () => showLastGameSummary(), + "Civilizations": () => Engine.PushGuiPage("page_structree.xml"), + "Options": () => Engine.PushGuiPage("page_options.xml", { + "selectedCategory": "Lobby", + "callback": "initUserConfigurables" + }) +}; + +/** * Processing of notifications sent by XmppClient.cpp. * * @returns true if the playerlist GUI must be updated. @@ -393,7 +406,7 @@ Engine.LobbyClearPresenceUpdates(); updatePlayerList(); updateSubject(Engine.LobbyGetRoomSubject()); - updateLobbyColumns(); + initUserConfigurables(); updateToggleBuddy(); Engine.GetGUIObjectByName("chatInput").tooltip = colorizeAutocompleteHotkey(); @@ -403,6 +416,48 @@ g_NetMessageTypes[msg.type][msg.level](msg); } +function initUserConfigurables() +{ + updateLobbyColumns(); + initGUIMoreButtonsBar(); +} + +function initGUIMoreButtonsBar() +{ + let showConfig = Engine.ConfigDB_GetValue("user", "gui.lobby.morebuttonsbar"); + + Engine.GetGUIObjectByName("moreOptionsBarActionHide").onmouseenter = + showConfig == "hiding" ? () => setMoreButtonsBarVisibility(false) : () => true; + Engine.GetGUIObjectByName("moreOptionsBarActionShow").onmouseenter = + showConfig == "hiding" ? () => setMoreButtonsBarVisibility(true) : () => true; + + setMoreButtonsBarVisibility(showConfig == "visible"); + + if (showConfig == "disabled") + return; + + let buttonWidthPercentton = (1 / Object.keys(g_MoreButtonsBarFuncs).length) * 100; + + let j = -1; + for (let i in g_MoreButtonsBarFuncs) + { + let button = Engine.GetGUIObjectByName("moreButtons[" + ++j + "]"); + button.hidden = false; + // Let gap "+2" between buttons and calculate size to fit space + button.size = j * buttonWidthPercentton + "%" + (j > 0 ? "+2" : "") + " 100%-25 " + + ((j + 1) * buttonWidthPercentton) + "%" + " 100%"; + button.caption = i; + button.onpress = g_MoreButtonsBarFuncs[i]; + } +} + +function setMoreButtonsBarVisibility(show) +{ + Engine.GetGUIObjectByName("moreOptionsBarActionHide").hidden = !show; + Engine.GetGUIObjectByName("chatPanel").size = show ? "0 49% 100% 100%-29" : "0 49% 100% 100%" + Engine.GetGUIObjectByName("moreButtons").hidden = !show; +} + function updateLobbyColumns() { let gameRating = Engine.ConfigDB_GetValue("user", "lobby.columns.gamerating") == "true"; Index: binaries/data/mods/public/gui/lobby/lobby_panels.xml =================================================================== --- binaries/data/mods/public/gui/lobby/lobby_panels.xml +++ binaries/data/mods/public/gui/lobby/lobby_panels.xml @@ -11,7 +11,7 @@ - + - +