From 4740eeaa43825977eada2d98148d6c8e4f2ddcaf Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 5 May 2024 16:15:35 +0100 Subject: [PATCH] Add: 'Get Content' buttons next to base set dropdowns in Game Options. (#12627) This allows base set content to be downloaded more easily, filtered by type and next to where it is set up. --- src/lang/english.txt | 3 +++ src/settings_gui.cpp | 26 ++++++++++++++++++++++++-- src/widgets/settings_widget.h | 3 +++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index df48b08dec..bb55d2194c 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1083,6 +1083,9 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base mus STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_GAME_OPTIONS_ONLINE_CONTENT :Get Content +STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Check for new and updated content to download + STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no plugins to integrate with social platforms installed) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{BLACK}{RAW_STRING} ({RAW_STRING}) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 3dfdccbb14..b2eaccc22e 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -14,6 +14,7 @@ #include "textbuf_gui.h" #include "command_func.h" #include "network/network.h" +#include "network/network_content.h" #include "town.h" #include "settings_internal.h" #include "strings_func.h" @@ -855,6 +856,18 @@ struct GameOptionsWindow : Window { OpenBrowser(BaseMusic::GetUsedSet()->url); break; + case WID_GO_BASE_GRF_CONTENT_DOWNLOAD: + ShowNetworkContentListWindow(nullptr, CONTENT_TYPE_BASE_GRAPHICS); + break; + + case WID_GO_BASE_SFX_CONTENT_DOWNLOAD: + ShowNetworkContentListWindow(nullptr, CONTENT_TYPE_BASE_SOUNDS); + break; + + case WID_GO_BASE_MUSIC_CONTENT_DOWNLOAD: + ShowNetworkContentListWindow(nullptr, CONTENT_TYPE_BASE_MUSIC); + break; + case WID_GO_CURRENCY_DROPDOWN: case WID_GO_AUTOSAVE_DROPDOWN: case WID_GO_LANG_DROPDOWN: @@ -988,6 +1001,8 @@ struct GameOptionsWindow : Window { this->SetWidgetDisabledState(WID_GO_BASE_SFX_TEXTFILE + tft, BaseSounds::GetUsedSet() == nullptr || !BaseSounds::GetUsedSet()->GetTextfile(tft).has_value()); this->SetWidgetDisabledState(WID_GO_BASE_MUSIC_TEXTFILE + tft, BaseMusic::GetUsedSet() == nullptr || !BaseMusic::GetUsedSet()->GetTextfile(tft).has_value()); } + + this->SetWidgetsDisabledState(!_network_available, WID_GO_BASE_GRF_CONTENT_DOWNLOAD, WID_GO_BASE_SFX_CONTENT_DOWNLOAD, WID_GO_BASE_MUSIC_CONTENT_DOWNLOAD); } }; @@ -1094,6 +1109,7 @@ static constexpr NWidgetPart _nested_game_options_widgets[] = { NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_PARAMETERS), SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_CONTENT_DOWNLOAD), SetDataTip(STR_GAME_OPTIONS_ONLINE_CONTENT, STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP), EndContainer(), NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(200, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), NWidget(NWID_VERTICAL), @@ -1123,7 +1139,10 @@ static constexpr NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_SFX, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_SFX_CONTENT_DOWNLOAD), SetDataTip(STR_GAME_OPTIONS_ONLINE_CONTENT, STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP), + EndContainer(), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_SFX_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP), SetFill(1, 0), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), @@ -1138,7 +1157,10 @@ static constexpr NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_CONTENT_DOWNLOAD), SetDataTip(STR_GAME_OPTIONS_ONLINE_CONTENT, STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP), + EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_MUSIC_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), NWidget(NWID_VERTICAL), SetPIPRatio(0, 0, 1), diff --git a/src/widgets/settings_widget.h b/src/widgets/settings_widget.h index fccba67a2b..9063d79bba 100644 --- a/src/widgets/settings_widget.h +++ b/src/widgets/settings_widget.h @@ -30,16 +30,19 @@ enum GameOptionsWidgets : WidgetID { WID_GO_GUI_FONT_AA, ///< Toggle whether to anti-alias fonts. WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_PARAMETERS, ///< Base GRF parameters. + WID_GO_BASE_GRF_CONTENT_DOWNLOAD, ///< 'Get Content' button for base GRF. WID_GO_BASE_GRF_OPEN_URL, ///< Open base GRF URL. WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2). WID_GO_BASE_GRF_DESCRIPTION = WID_GO_BASE_GRF_TEXTFILE + TFT_CONTENT_END, ///< Description of selected base GRF. WID_GO_BASE_SFX_DROPDOWN, ///< Use to select a base SFX. + WID_GO_BASE_SFX_CONTENT_DOWNLOAD, ///< 'Get Content' button for base SFX. WID_GO_TEXT_SFX_VOLUME, ///< Sound effects volume label. WID_GO_BASE_SFX_VOLUME, ///< Change sound effects volume. WID_GO_BASE_SFX_OPEN_URL, ///< Open base SFX URL. WID_GO_BASE_SFX_TEXTFILE, ///< Open base SFX readme, changelog (+1) or license (+2). WID_GO_BASE_SFX_DESCRIPTION = WID_GO_BASE_SFX_TEXTFILE + TFT_CONTENT_END, ///< Description of selected base SFX. WID_GO_BASE_MUSIC_DROPDOWN, ///< Use to select a base music set. + WID_GO_BASE_MUSIC_CONTENT_DOWNLOAD, ///< 'Get Content' button for base music. WID_GO_TEXT_MUSIC_VOLUME, ///< Music volume label. WID_GO_BASE_MUSIC_VOLUME, ///< Change music volume. WID_GO_BASE_MUSIC_JUKEBOX, ///< Open the jukebox.