mirror of https://github.com/OpenTTD/OpenTTD
Fix #11087: Disable base graphics/sound dropdown outside main menu
parent
4ae9ebf582
commit
161cc04b8a
|
@ -577,7 +577,7 @@ struct MusicTrackSelectionWindow : public Window {
|
||||||
|
|
||||||
case WID_MTS_MUSICSET: {
|
case WID_MTS_MUSICSET: {
|
||||||
int selected = 0;
|
int selected = 0;
|
||||||
ShowDropDownList(this, BuildMusicSetDropDownList(&selected), selected, widget);
|
ShowDropDownList(this, BuildSetDropDownList<BaseMusic>(&selected), selected, widget);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,25 +74,6 @@ static uint GetCurrentResolutionIndex()
|
||||||
|
|
||||||
static void ShowCustCurrency();
|
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. */
|
/** Window for displaying the textfile of a BaseSet. */
|
||||||
template <class TBaseSet>
|
template <class TBaseSet>
|
||||||
struct BaseSetTextfileWindow : public TextfileWindow {
|
struct BaseSetTextfileWindow : public TextfileWindow {
|
||||||
|
@ -291,15 +272,15 @@ struct GameOptionsWindow : Window {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GO_BASE_GRF_DROPDOWN:
|
case WID_GO_BASE_GRF_DROPDOWN:
|
||||||
list = BuildSetDropDownList<BaseGraphics>(selected_index, (_game_mode == GM_MENU));
|
list = BuildSetDropDownList<BaseGraphics>(selected_index);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GO_BASE_SFX_DROPDOWN:
|
case WID_GO_BASE_SFX_DROPDOWN:
|
||||||
list = BuildSetDropDownList<BaseSounds>(selected_index, (_game_mode == GM_MENU));
|
list = BuildSetDropDownList<BaseSounds>(selected_index);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_GO_BASE_MUSIC_DROPDOWN:
|
case WID_GO_BASE_MUSIC_DROPDOWN:
|
||||||
list = BuildMusicSetDropDownList(selected_index);
|
list = BuildSetDropDownList<BaseMusic>(selected_index);
|
||||||
break;
|
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_AUTO, _gui_scale_cfg == -1);
|
||||||
this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels);
|
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;
|
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);
|
this->GetWidget<NWidgetCore>(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL);
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,18 @@ void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clic
|
||||||
void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable);
|
void DrawDropDownButton(int x, int y, Colours button_colour, bool state, bool clickable);
|
||||||
void DrawBoolButton(int x, int y, 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 */
|
/* Actually implemented in music_gui.cpp */
|
||||||
void ChangeMusicSet(int index);
|
void ChangeMusicSet(int index);
|
||||||
|
|
Loading…
Reference in New Issue