From ae9ea5b85921fc5165ecf5c227c5c5cc1265ee90 Mon Sep 17 00:00:00 2001 From: wraitii Date: Sun, 27 Dec 2020 15:26:19 +0000 Subject: [PATCH] Map browser, used in the gamesetup and in the main menu. This grid-based system allows browsing all available maps at a glance, encouraging more diversity and making it nicer to pick a map. Moves the mapCache and the map filters controller to the gui maps/ folders, and include that folder where it is used, instead of them being in common/ or the gamesetup. Comments By: Freagarach Patch By: Nani (reworked by elexis then wraitii) Fixes #5315 (though further work, such as proper scrolling, would be nice). Differential Revision: https://code.wildfiregames.com/D1703 This was SVN commit r24459. --- binaries/data/config/default.cfg | 3 + .../GameSettings/GameSettingControlButton.js | 25 +++ .../GameSettings/GameSettingControlButton.xml | 13 ++ .../GameSettings/GameSettingsLayout.js | 1 + .../GameSettings/Single/Buttons/MapBrowser.js | 29 ++++ .../Pages/GameSetupPage/GameSetupPage.xml | 1 + .../Panels/GameSettingsPanel.xml | 7 + .../Pages/GameSetupPage/Panels/MapPreview.js | 11 ++ .../Pages/GameSetupPage/Panels/MapPreview.xml | 2 +- .../Pages/MapBrowserPage/MapBrowserPage.js | 22 +++ .../Pages/MapBrowserPage/MapBrowserPage.xml | 5 + .../mods/public/gui/gamesetup/gamesetup.xml | 2 + .../data/mods/public/gui/loadgame/load.xml | 1 + binaries/data/mods/public/gui/lobby/lobby.xml | 1 + .../public/gui/{common => maps}/MapCache.js | 0 .../Controls => maps}/MapFilters.js | 2 +- .../public/gui/maps/mapbrowser/MapBrowser.js | 48 ++++++ .../public/gui/maps/mapbrowser/MapBrowser.xml | 30 ++++ .../gui/maps/mapbrowser/MapBrowserPage.js | 20 +++ .../gui/maps/mapbrowser/MapBrowserPage.xml | 11 ++ .../mapbrowser/controls/MapBrowserControls.js | 58 +++++++ .../controls/MapBrowserControls.xml | 57 +++++++ .../mapbrowser/controls/MapDescription.js | 49 ++++++ .../mapbrowser/controls/MapDescription.xml | 7 + .../maps/mapbrowser/controls/MapFiltering.js | 70 +++++++++ .../maps/mapbrowser/controls/Pagination.js | 55 +++++++ .../gui/maps/mapbrowser/grid/GridBrowser.js | 145 ++++++++++++++++++ .../maps/mapbrowser/grid/GridBrowserItem.js | 44 ++++++ .../maps/mapbrowser/grid/MapGridBrowser.js | 102 ++++++++++++ .../maps/mapbrowser/grid/MapGridBrowser.xml | 25 +++ .../mapbrowser/grid/MapGridBrowserItem.js | 64 ++++++++ .../gui/maps/mapbrowser/utils/Components.js | 92 +++++++++++ .../gui/maps/mapbrowser/utils/MatchSort.js | 85 ++++++++++ .../data/mods/public/gui/page_mapbrowser.xml | 16 ++ .../mods/public/gui/pregame/MainMenuItems.js | 7 + .../public/gui/replaymenu/replay_menu.xml | 1 + .../data/mods/public/gui/session/session.xml | 1 + 37 files changed, 1110 insertions(+), 2 deletions(-) create mode 100644 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.js create mode 100644 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.xml create mode 100644 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Buttons/MapBrowser.js create mode 100644 binaries/data/mods/public/gui/gamesetup/Pages/MapBrowserPage/MapBrowserPage.js create mode 100644 binaries/data/mods/public/gui/gamesetup/Pages/MapBrowserPage/MapBrowserPage.xml rename binaries/data/mods/public/gui/{common => maps}/MapCache.js (100%) rename binaries/data/mods/public/gui/{gamesetup/Controls => maps}/MapFilters.js (97%) create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/MapBrowser.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/MapBrowser.xml create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/MapBrowserPage.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/MapBrowserPage.xml create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/MapBrowserControls.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/MapBrowserControls.xml create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/MapDescription.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/MapDescription.xml create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/MapFiltering.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/controls/Pagination.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/grid/GridBrowser.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/grid/GridBrowserItem.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/grid/MapGridBrowser.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/grid/MapGridBrowser.xml create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/grid/MapGridBrowserItem.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/utils/Components.js create mode 100644 binaries/data/mods/public/gui/maps/mapbrowser/utils/MatchSort.js create mode 100644 binaries/data/mods/public/gui/page_mapbrowser.xml diff --git a/binaries/data/config/default.cfg b/binaries/data/config/default.cfg index c5903197d3..06f1b2862f 100644 --- a/binaries/data/config/default.cfg +++ b/binaries/data/config/default.cfg @@ -288,6 +288,9 @@ offscreen = Alt ; Include offscreen units in selection 8 = 8, Num8 9 = 9, Num9 +[hotkey.gamesetup] +mapbrowser.open = "M" + [hotkey.session] kill = Delete, Backspace ; Destroy selected units stop = "H" ; Stop the current action diff --git a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.js b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.js new file mode 100644 index 0000000000..5c36532181 --- /dev/null +++ b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.js @@ -0,0 +1,25 @@ +/** + * This class is implemented by gamesettings that are controlled by a button. + */ +class GameSettingControlButton extends GameSettingControl +{ + setControl(gameSettingControlManager) + { + let row = gameSettingControlManager.getNextRow("buttonSettingFrame"); + this.frame = Engine.GetGUIObjectByName("buttonSettingFrame[" + row + "]"); + this.button = Engine.GetGUIObjectByName("buttonSettingControl[" + row + "]"); + this.button.onPress = this.onPress.bind(this); + if (this.Caption) + this.button.caption = this.Caption; + } + + setControlTooltip(tooltip) + { + this.button.tooltip = tooltip; + } + + setControlHidden(hidden) + { + this.button.hidden = hidden; + } +} diff --git a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.xml b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.xml new file mode 100644 index 0000000000..451d1d2289 --- /dev/null +++ b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/GameSettingControlButton.xml @@ -0,0 +1,13 @@ + +