|
@@ -29,26 +29,28 @@
|
|
|
#include "core/geometry_func.hpp"
|
|
|
#include "ai/ai.hpp"
|
|
|
#include "blitter/factory.hpp"
|
|
|
#include "language.h"
|
|
|
#include "textfile_gui.h"
|
|
|
#include "stringfilter_type.h"
|
|
|
#include "querystring_gui.h"
|
|
|
#include "fontcache.h"
|
|
|
#include "zoom_func.h"
|
|
|
#include "video/video_driver.hpp"
|
|
|
|
|
|
#include <vector>
|
|
|
#include <iterator>
|
|
|
|
|
|
#include "safeguards.h"
|
|
|
#include "video/video_driver.hpp"
|
|
|
|
|
|
|
|
|
static const StringID _autosave_dropdown[] = {
|
|
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
|
|
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH,
|
|
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS,
|
|
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS,
|
|
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS,
|
|
|
INVALID_STRING_ID,
|
|
|
};
|
|
|
|
|
|
static const StringID _gui_zoom_dropdown[] = {
|
|
@@ -131,33 +133,51 @@ struct BaseSetTextfileWindow : public Te
|
|
|
* Open the BaseSet version of the textfile window.
|
|
|
* @param file_type The type of textfile to display.
|
|
|
* @param baseset The BaseSet to use.
|
|
|
* @param content_type STR_CONTENT_TYPE_xxx for title.
|
|
|
*/
|
|
|
template <class TBaseSet>
|
|
|
void ShowBaseSetTextfileWindow(TextfileType file_type, const TBaseSet* baseset, StringID content_type)
|
|
|
{
|
|
|
DeleteWindowById(WC_TEXTFILE, file_type);
|
|
|
new BaseSetTextfileWindow<TBaseSet>(file_type, baseset, content_type);
|
|
|
}
|
|
|
|
|
|
std::set<int> _refresh_rates = { 30, 60, 75, 90, 100, 120, 144, 240 };
|
|
|
|
|
|
/**
|
|
|
* Add the refresh rate from the config and the refresh rates from all the monitors to
|
|
|
* our list of refresh rates shown in the GUI.
|
|
|
*/
|
|
|
static void AddRefreshRatesAndSelect()
|
|
|
{
|
|
|
/* Add the refresh rate as selected in the config. */
|
|
|
_refresh_rates.insert(_settings_client.gui.refresh_rate);
|
|
|
|
|
|
/* Add all the refresh rates of all monitors connected to the machine. */
|
|
|
std::vector<int> monitorRates = VideoDriver::GetInstance()->GetListOfMonitorRefreshRates();
|
|
|
std::copy(monitorRates.begin(), monitorRates.end(), std::inserter(_refresh_rates, _refresh_rates.end()));
|
|
|
}
|
|
|
|
|
|
struct GameOptionsWindow : Window {
|
|
|
GameSettings *opt;
|
|
|
bool reload;
|
|
|
|
|
|
GameOptionsWindow(WindowDesc *desc) : Window(desc)
|
|
|
{
|
|
|
this->opt = &GetGameSettings();
|
|
|
this->reload = false;
|
|
|
|
|
|
AddRefreshRatesAndSelect();
|
|
|
|
|
|
this->InitNested(WN_GAME_OPTIONS_GAME_OPTIONS);
|
|
|
this->OnInvalidateData(0);
|
|
|
}
|
|
|
|
|
|
~GameOptionsWindow()
|
|
|
{
|
|
|
DeleteWindowById(WC_CUSTOM_CURRENCY, 0);
|
|
|
DeleteWindowByClass(WC_TEXTFILE);
|
|
|
if (this->reload) _switch_mode = SM_MENU;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -206,24 +226,34 @@ struct GameOptionsWindow : Window {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_GO_RESOLUTION_DROPDOWN: // Setup resolution dropdown
|
|
|
if (_resolutions.empty()) break;
|
|
|
|
|
|
*selected_index = GetCurRes();
|
|
|
for (uint i = 0; i < _resolutions.size(); i++) {
|
|
|
list.emplace_back(new DropDownListStringItem(SPECSTR_RESOLUTION_START + i, i, false));
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case WID_GO_REFRESH_RATE_DROPDOWN: // Setup refresh rate dropdown
|
|
|
for (auto it = _refresh_rates.begin(); it != _refresh_rates.end(); it++) {
|
|
|
auto i = std::distance(_refresh_rates.begin(), it);
|
|
|
if (*it == _settings_client.gui.refresh_rate) *selected_index = i;
|
|
|
auto item = new DropDownListParamStringItem(STR_GAME_OPTIONS_REFRESH_RATE_ITEM, i, false);
|
|
|
item->SetParam(0, *it);
|
|
|
list.emplace_back(item);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case WID_GO_GUI_ZOOM_DROPDOWN: {
|
|
|
*selected_index = _gui_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _gui_zoom + 1 : 0;
|
|
|
const StringID *items = _gui_zoom_dropdown;
|
|
|
for (int i = 0; *items != INVALID_STRING_ID; items++, i++) {
|
|
|
list.emplace_back(new DropDownListStringItem(*items, i, i != 0 && _settings_client.gui.zoom_min > ZOOM_LVL_OUT_4X - i + 1));
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_GO_FONT_ZOOM_DROPDOWN: {
|
|
|
*selected_index = _font_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _font_zoom + 1 : 0;
|
|
|
const StringID *items = _font_zoom_dropdown;
|
|
@@ -243,35 +273,36 @@ struct GameOptionsWindow : Window {
|
|
|
|
|
|
case WID_GO_BASE_MUSIC_DROPDOWN:
|
|
|
list = BuildMusicSetDropDownList(selected_index);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
void SetStringParameters(int widget) const override
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
|
|
|
case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
|
|
|
case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break;
|
|
|
case WID_GO_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _resolutions.size() ? STR_GAME_OPTIONS_RESOLUTION_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break;
|
|
|
case WID_GO_GUI_ZOOM_DROPDOWN: SetDParam(0, _gui_zoom_dropdown[_gui_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _gui_zoom_cfg + 1 : 0]); break;
|
|
|
case WID_GO_FONT_ZOOM_DROPDOWN: SetDParam(0, _font_zoom_dropdown[_font_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _font_zoom_cfg + 1 : 0]); break;
|
|
|
case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break;
|
|
|
case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break;
|
|
|
case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
|
|
|
case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
|
|
|
case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break;
|
|
|
case WID_GO_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _resolutions.size() ? STR_GAME_OPTIONS_RESOLUTION_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break;
|
|
|
case WID_GO_GUI_ZOOM_DROPDOWN: SetDParam(0, _gui_zoom_dropdown[_gui_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _gui_zoom_cfg + 1 : 0]); break;
|
|
|
case WID_GO_FONT_ZOOM_DROPDOWN: SetDParam(0, _font_zoom_dropdown[_font_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _font_zoom_cfg + 1 : 0]); break;
|
|
|
case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break;
|
|
|
case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name.c_str()); break;
|
|
|
case WID_GO_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break;
|
|
|
case WID_GO_REFRESH_RATE_DROPDOWN: SetDParam(0, _settings_client.gui.refresh_rate); break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void DrawWidget(const Rect &r, int widget) const override
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case WID_GO_BASE_GRF_DESCRIPTION:
|
|
|
SetDParamStr(0, BaseGraphics::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode()));
|
|
|
DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_BLACK_RAW_STRING);
|
|
|
break;
|
|
|
|
|
|
case WID_GO_BASE_SFX_DESCRIPTION:
|
|
@@ -442,24 +473,34 @@ struct GameOptionsWindow : Window {
|
|
|
ClearAllCachedNames();
|
|
|
UpdateAllVirtCoords();
|
|
|
CheckBlitter();
|
|
|
ReInitAllWindows();
|
|
|
break;
|
|
|
|
|
|
case WID_GO_RESOLUTION_DROPDOWN: // Change resolution
|
|
|
if ((uint)index < _resolutions.size() && ChangeResInGame(_resolutions[index].width, _resolutions[index].height)) {
|
|
|
this->SetDirty();
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case WID_GO_REFRESH_RATE_DROPDOWN: {
|
|
|
_settings_client.gui.refresh_rate = *std::next(_refresh_rates.begin(), index);
|
|
|
if (_settings_client.gui.refresh_rate > 60) {
|
|
|
/* Show warning to the user that this refresh rate might not be suitable on
|
|
|
* larger maps with many NewGRFs and vehicles. */
|
|
|
ShowErrorMessage(STR_GAME_OPTIONS_REFRESH_RATE_WARNING, INVALID_STRING_ID, WL_INFO);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_GO_GUI_ZOOM_DROPDOWN: {
|
|
|
int8 new_zoom = index > 0 ? ZOOM_LVL_OUT_4X - index + 1 : ZOOM_LVL_CFG_AUTO;
|
|
|
if (new_zoom != _gui_zoom_cfg) {
|
|
|
GfxClearSpriteCache();
|
|
|
_gui_zoom_cfg = new_zoom;
|
|
|
UpdateGUIZoom();
|
|
|
UpdateCursorSize();
|
|
|
UpdateAllVirtCoords();
|
|
|
FixTitleGameZoom();
|
|
|
ReInitAllWindows();
|
|
|
}
|
|
|
break;
|
|
@@ -519,54 +560,65 @@ struct GameOptionsWindow : Window {
|
|
|
|
|
|
static const NWidgetPart _nested_game_options_widgets[] = {
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
|
|
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_GO_BACKGROUND), SetPIP(6, 6, 10),
|
|
|
NWidget(NWID_HORIZONTAL), SetPIP(10, 10, 10),
|
|
|
NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_AUTOSAVE_FRAME, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_AUTOSAVE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), SetFill(1, 0), SetPadding(0, 0, 3, 0),
|
|
|
NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), SetPadding(0, 0, 3, 0),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_VIDEO_ACCELERATION, STR_NULL),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VIDEO_ACCEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_ZOOM_FRAME, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_GUI_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(0, 0), SetFill(0, 1),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
|
|
|
NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_LANGUAGE, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_LANG_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_LANGUAGE_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_ZOOM_FRAME, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_GUI_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_FONT_ZOOM, STR_NULL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_FONT_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GRAPHICS, STR_NULL), SetPadding(0, 10, 0, 10),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(NWID_VERTICAL),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE, STR_NULL), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_VIDEO_ACCELERATION, STR_NULL),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_VERTICAL),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), SetFill(1, 0), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_REFRESH_RATE_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE_ITEM, STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP), SetFill(1, 0), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(NWID_HORIZONTAL), SetPadding(0, 0, 2, 0),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VIDEO_ACCEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
|
|
|
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), SetPadding(0, 10, 0, 10),
|
|
|
NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
|
|
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_STATUS), SetMinimalSize(150, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0),
|
|
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|