Changeset - r27673:4901d5ff9f0d
[Not reviewed]
master
0 3 0
merni-ns - 11 months ago 2023-07-01 11:57:06
merni.ns@protonmail.ch
Fix #11087: Disable base graphics/sound dropdown outside main menu
3 files changed with 19 insertions and 24 deletions:
0 comments (0 inline, 0 general)
src/music_gui.cpp
Show inline comments
 
@@ -577,7 +577,7 @@ struct MusicTrackSelectionWindow : publi
 

	
 
			case WID_MTS_MUSICSET: {
 
				int selected = 0;
 
				ShowDropDownList(this, BuildMusicSetDropDownList(&selected), selected, widget);
 
				ShowDropDownList(this, BuildSetDropDownList<BaseMusic>(&selected), selected, widget);
 
				break;
 
			}
 

	
src/settings_gui.cpp
Show inline comments
 
@@ -74,25 +74,6 @@ static uint GetCurrentResolutionIndex()
 

	
 
static void ShowCustCurrency();
 

	
 
template <class T>
 
static DropDownList BuildSetDropDownList(int *selected_index, bool allow_selection)
 
{
 
	int n = T::GetNumSets();
 
	*selected_index = T::GetIndexOfUsedSet();
 

	
 
	DropDownList list;
 
	for (int i = 0; i < n; i++) {
 
		list.emplace_back(new DropDownListStringItem(T::GetSet(i)->name, i, !allow_selection && (*selected_index != i)));
 
	}
 

	
 
	return list;
 
}
 

	
 
DropDownList BuildMusicSetDropDownList(int *selected_index)
 
{
 
	return BuildSetDropDownList<BaseMusic>(selected_index, true);
 
}
 

	
 
/** Window for displaying the textfile of a BaseSet. */
 
template <class TBaseSet>
 
struct BaseSetTextfileWindow : public TextfileWindow {
 
@@ -291,15 +272,15 @@ struct GameOptionsWindow : Window {
 
				break;
 

	
 
			case WID_GO_BASE_GRF_DROPDOWN:
 
				list = BuildSetDropDownList<BaseGraphics>(selected_index, (_game_mode == GM_MENU));
 
				list = BuildSetDropDownList<BaseGraphics>(selected_index);
 
				break;
 

	
 
			case WID_GO_BASE_SFX_DROPDOWN:
 
				list = BuildSetDropDownList<BaseSounds>(selected_index, (_game_mode == GM_MENU));
 
				list = BuildSetDropDownList<BaseSounds>(selected_index);
 
				break;
 

	
 
			case WID_GO_BASE_MUSIC_DROPDOWN:
 
				list = BuildMusicSetDropDownList(selected_index);
 
				list = BuildSetDropDownList<BaseMusic>(selected_index);
 
				break;
 
		}
 

	
 
@@ -740,6 +721,9 @@ struct GameOptionsWindow : Window {
 
		this->SetWidgetLoweredState(WID_GO_GUI_SCALE_AUTO, _gui_scale_cfg == -1);
 
		this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels);
 

	
 
		this->SetWidgetDisabledState(WID_GO_BASE_GRF_DROPDOWN, _game_mode != GM_MENU);
 
		this->SetWidgetDisabledState(WID_GO_BASE_SFX_DROPDOWN, _game_mode != GM_MENU);
 

	
 
		bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0;
 
		this->GetWidget<NWidgetCore>(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL);
 

	
src/settings_gui.h
Show inline comments
 
@@ -22,7 +22,18 @@ void DrawArrowButtons(int x, int y, Colo
 
void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable);
 
void DrawBoolButton(int x, int y, bool state, bool clickable);
 

	
 
DropDownList BuildMusicSetDropDownList(int *selected_index);
 
template <class T>
 
DropDownList BuildSetDropDownList(int *selected_index)
 
{
 
	int n = T::GetNumSets();
 
	*selected_index = T::GetIndexOfUsedSet();
 
	DropDownList list;
 
	for (int i = 0; i < n; i++) {
 
		list.emplace_back(new DropDownListStringItem(T::GetSet(i)->name, i, false));
 
	}
 
	return list;
 
}
 

	
 

	
 
/* Actually implemented in music_gui.cpp */
 
void ChangeMusicSet(int index);
0 comments (0 inline, 0 general)