Changeset - r11934:17c3a38acbd0
[Not reviewed]
master
0 4 0
frosch - 15 years ago 2009-05-17 18:21:21
frosch@openttd.org
(svn r16342) -Feature(tte): Display base graphics description in game options window.
4 files changed with 67 insertions and 16 deletions:
0 comments (0 inline, 0 general)
src/gfxinit.cpp
Show inline comments
 
@@ -597,17 +597,41 @@ int GetIndexOfCurrentGraphicsSet()
 
		n++;
 
	}
 
	return -1;
 
}
 

	
 
/**
 
 * Get the graphics set at the specified index
 
 */
 
static const GraphicsSet *GetGraphicsSetAtIndex(int index)
 
{
 
	for (const GraphicsSet *g = _available_graphics_sets; g != NULL; g = g->next) {
 
		if (g != _used_graphics_set && g->found_grfs <= 1) continue;
 
		if (index == 0) return g;
 
		index--;
 
	}
 
	error("GetGraphicsSetAtIndex: index %d out of range", index);
 
}
 

	
 
/**
 
 * Get the name of the graphics set at the specified index
 
 */
 
const char *GetGraphicsSetName(int index)
 
{
 
	for (const GraphicsSet *g = _available_graphics_sets; g != NULL; g = g->next) {
 
		if (g != _used_graphics_set && g->found_grfs <= 1) continue;
 
		if (index == 0) return g->name;
 
		index--;
 
	}
 
	error("GetGraphicsSetName: index %d out of range", index);
 
	return GetGraphicsSetAtIndex(index)->name;
 
}
 

	
 
/**
 
 * Get the description of the graphics set at the specified index
 
 */
 
const char *GetGraphicsSetDescription(int index)
 
{
 
	return GetGraphicsSetAtIndex(index)->description;
 
}
 

	
 
/**
 
 * Get the number of missing/corrupted files of the graphics set at the specified index
 
 */
 
int GetGraphicsSetNumMissingFiles(int index)
 
{
 
	return MAX_GFT - GetGraphicsSetAtIndex(index)->found_grfs;
 
}
src/gfxinit.h
Show inline comments
 
@@ -15,10 +15,12 @@ void FindGraphicsSets();
 
bool SetGraphicsSet(const char *name);
 
char *GetGraphicsSetsList(char *p, const char *last);
 

	
 
int GetNumGraphicsSets();
 
int GetIndexOfCurrentGraphicsSet();
 
const char *GetGraphicsSetName(int index);
 
const char *GetGraphicsSetDescription(int index);
 
int GetGraphicsSetNumMissingFiles(int index);
 

	
 
extern char *_ini_graphics_set;
 

	
 
#endif /* GFXINIT_H */
src/lang/english.txt
Show inline comments
 
@@ -852,12 +852,14 @@ STR_OPTIONS_SCREENSHOT_FORMAT           
 
STR_OPTIONS_SCREENSHOT_FORMAT_CBO                               :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
 
STR_OPTIONS_SCREENSHOT_FORMAT_TIP                               :{BLACK}Select the screenshot format to use
 

	
 
STR_OPTIONS_BASE_GRF                                            :{BLACK}Base graphics set
 
STR_OPTIONS_BASE_GRF_CBO                                        :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{RAW_STRING}
 
STR_OPTIONS_BASE_GRF_TIP                                        :{BLACK}Select the base graphics set to use
 
STR_OPTIONS_BASE_GRF_STATUS                                     :{RED}{10:NUM} missing/corrupted file{P "" s}
 
STR_OPTIONS_BASE_GRF_DESCRIPTION_TIP                            :{BLACK}Additional information about the base graphics set
 

	
 
STR_AUTOSAVE_FAILED                                             :{WHITE}Autosave failed
 

	
 
STR_MONTH_JAN                                                   :January
 
STR_MONTH_FEB                                                   :February
 
STR_MONTH_MAR                                                   :March
src/settings_gui.cpp
Show inline comments
 
@@ -117,12 +117,14 @@ enum GameOptionsWidgets {
 
	GOW_FULLSCREEN_LABEL,    ///< Text (right) to the fullscreen button
 
	GOW_FULLSCREEN_BUTTON,   ///< Toggle fullscreen
 
	GOW_SCREENSHOT_FRAME,    ///< Frame for the screenshot type
 
	GOW_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!
 
	GOW_BASE_GRF_FRAME,      ///< Base GRF selection frame
 
	GOW_BASE_GRF_DROPDOWN,   ///< Use to select a base GRF
 
	GOW_BASE_GRF_STATUS,     ///< Info about missing files etc.
 
	GOW_BASE_GRF_DESCRIPTION,///< Description of selected base GRF
 
};
 

	
 
/**
 
 * Update/redraw the townnames dropdown
 
 * @param w   the window the dropdown belongs to
 
 * @param sel the currently selected townname generator
 
@@ -188,14 +190,28 @@ struct GameOptionsWindow : Window {
 
		SetDParam(6, SPECSTR_LANGUAGE_START + _dynlang.curr);
 
		int i = GetCurRes();
 
		SetDParam(7, i == _num_resolutions ? STR_RES_OTHER : SPECSTR_RESOLUTION_START + i);
 
		SetDParam(8, SPECSTR_SCREENSHOT_START + _cur_screenshot_format);
 
		this->SetWidgetLoweredState(GOW_FULLSCREEN_BUTTON, _fullscreen);
 
		SetDParamStr(9, GetGraphicsSetName(GetIndexOfCurrentGraphicsSet()));
 
		int missing_files = GetGraphicsSetNumMissingFiles(GetIndexOfCurrentGraphicsSet());
 
		SetDParam(10, missing_files);
 
		SetWidgetHiddenState(GOW_BASE_GRF_STATUS, missing_files == 0);
 

	
 
		this->DrawWidgets();
 

	
 
		SetDParam(0, STR_JUST_RAW_STRING);
 
		SetDParamStr(1, GetGraphicsSetDescription(GetIndexOfCurrentGraphicsSet()));
 
		const Widget *desc = &this->widget[GOW_BASE_GRF_DESCRIPTION];
 
		int y = DrawStringMultiLine(desc->left, desc->right, desc->top, UINT16_MAX, STR_BLACK_STRING);
 

	
 
		if (y != desc->bottom) {
 
			this->SetDirty();
 
			ResizeWindowForWidget(this, GOW_BASE_GRF_DESCRIPTION, 0, y - desc->bottom);
 
			this->SetDirty();
 
		}
 
	}
 

	
 
	virtual void OnClick(Point pt, int widget)
 
	{
 
		switch (widget) {
 
			case GOW_CURRENCY_DROPDOWN: // Setup currencies dropdown
 
@@ -325,22 +341,23 @@ struct GameOptionsWindow : Window {
 

	
 
					free(_ini_graphics_set);
 
					_ini_graphics_set = strdup(name);
 

	
 
					SetGraphicsSet(name);
 
					this->reload = true;
 
					this->SetDirty();
 
				}
 
				break;
 
		}
 
	}
 
};
 

	
 
static const Widget _game_options_widgets[] = {
 
{   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_BLACK_CROSS,                           STR_TOOLTIP_CLOSE_WINDOW},                          // GOW_CLOSEBOX
 
{    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   369,     0,    13, STR_GAME_OPTIONS_CAPTION,                  STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},                // GOW_CAPTION
 
{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   369,    14,   242, 0x0,                                       STR_NULL},                                          // GOW_BACKGROUND
 
{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   369,    14,   248, 0x0,                                       STR_NULL},                                          // GOW_BACKGROUND
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,    10,   179,    20,    55, STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME,     STR_NULL},                                          // GOW_CURRENCY_FRAME
 
{   WWT_DROPDOWN,   RESIZE_NONE,  COLOUR_GREY,    20,   169,    34,    45, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN,  STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP},  // GOW_CURRENCY_DROPDOWN
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,   190,   359,    20,    55, STR_GAME_OPTIONS_MEASURING_UNITS_FRAME,    STR_NULL},                                          // GOW_DISTANCE_FRAME
 
{   WWT_DROPDOWN,   RESIZE_NONE,  COLOUR_GREY,   200,   349,    34,    45, STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN, STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP}, // GOW_DISTANCE_DROPDOWN
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,    10,   179,    62,    97, STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME,      STR_NULL},                                          // GOW_ROADSIDE_FRAME
 
{   WWT_DROPDOWN,   RESIZE_NONE,  COLOUR_GREY,    20,   169,    76,    87, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN,   STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP},   // GOW_ROADSIDE_DROPDOWN
 
@@ -357,26 +374,28 @@ static const Widget _game_options_widget
 
{       WWT_TEXT,   RESIZE_NONE,  COLOUR_GREY,    20,   146,   175,   186, STR_OPTIONS_FULLSCREEN,                    STR_NULL},                                          // GOW_FULLSCREEN_LABEL
 
{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,   149,   169,   176,   184, STR_EMPTY,                                 STR_OPTIONS_FULLSCREEN_TIP},                        // GOW_FULLSCREEN_BUTTON
 

	
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,   190,   359,   146,   190, STR_OPTIONS_SCREENSHOT_FORMAT,             STR_NULL},                                          // GOW_SCREENSHOT_FRAME
 
{   WWT_DROPDOWN,   RESIZE_NONE,  COLOUR_GREY,   200,   349,   160,   171, STR_OPTIONS_SCREENSHOT_FORMAT_CBO,         STR_OPTIONS_SCREENSHOT_FORMAT_TIP},                 // GOW_SCREENSHOT_DROPDOWN
 

	
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,    10,   179,   197,   232, STR_OPTIONS_BASE_GRF,                      STR_NULL},                                          // GOW_BASE_GRF_FRAME
 
{      WWT_FRAME,   RESIZE_NONE,  COLOUR_GREY,    10,   359,   197,   238, STR_OPTIONS_BASE_GRF,                      STR_NULL},                                          // GOW_BASE_GRF_FRAME
 
{   WWT_DROPDOWN,   RESIZE_NONE,  COLOUR_GREY,    20,   169,   211,   222, STR_OPTIONS_BASE_GRF_CBO,                  STR_OPTIONS_BASE_GRF_TIP},                          // GOW_BASE_GRF_DROPDOWN
 
{       WWT_TEXT,   RESIZE_NONE,  COLOUR_GREY,   200,   349,   211,   222, STR_OPTIONS_BASE_GRF_STATUS,               STR_NULL},                                          // GOW_BASE_GRF_STATUS
 
{       WWT_TEXT,   RESIZE_NONE,  COLOUR_GREY,    20,   349,   229,   228, STR_EMPTY,                                 STR_OPTIONS_BASE_GRF_DESCRIPTION_TIP},              // GOW_BASE_GRF_DESCRIPTION
 

	
 
{   WIDGETS_END},
 
};
 

	
 
static const NWidgetPart _nested_game_options_widgets[] = {
 
	NWidget(NWID_HORIZONTAL),
 
		NWidget(WWT_CLOSEBOX, COLOUR_GREY, GOW_CLOSEBOX),
 
		NWidget(WWT_CAPTION, COLOUR_GREY, GOW_CAPTION), SetDataTip(STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
 
	EndContainer(),
 
	NWidget(WWT_PANEL, COLOUR_GREY, GOW_BACKGROUND),
 
	NWidget(WWT_PANEL, COLOUR_GREY, GOW_BACKGROUND), SetPIP(6, 6, 10),
 
		NWidget(NWID_HORIZONTAL), SetPIP(10, 10, 10),
 
			NWidget(NWID_VERTICAL), SetPIP(6, 6, 10),
 
			NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_CURRENCY_FRAME), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_ROADSIDE_FRAME), SetDataTip(STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_ROADSIDE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
@@ -387,18 +406,15 @@ static const NWidgetPart _nested_game_op
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_RESOLUTION_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_RES_CBO, STR_OPTIONS_RES_TIP), SetPadding(14, 10, 3, 10),
 
					NWidget(NWID_HORIZONTAL),
 
						NWidget(WWT_TEXT, COLOUR_GREY, GOW_FULLSCREEN_LABEL), SetMinimalSize(0, 12), SetFill(true, false), SetDataTip(STR_OPTIONS_FULLSCREEN, STR_NULL), SetPadding(0, 2, 4, 10),
 
						NWidget(WWT_TEXTBTN, COLOUR_GREY, GOW_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_OPTIONS_FULLSCREEN_TIP), SetPadding(0, 10, 4, 0),
 
					EndContainer(),
 
				EndContainer(),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_BASE_GRF_FRAME), SetDataTip(STR_OPTIONS_BASE_GRF, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_BASE_GRF_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_BASE_GRF_CBO, STR_OPTIONS_BASE_GRF_TIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
			EndContainer(),
 

	
 
			NWidget(NWID_VERTICAL), SetPIP(6, 6, 10),
 
			NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_DISTANCE_FRAME), SetDataTip(STR_GAME_OPTIONS_MEASURING_UNITS_FRAME, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_DISTANCE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN, STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_TOWNNAME_FRAME), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_FRAME, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_TOWNNAME_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN, STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
@@ -406,20 +422,27 @@ static const NWidgetPart _nested_game_op
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_LANG_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_LANG_CBO, STR_OPTIONS_LANG_TIP), SetPadding(14, 10, 10, 10),
 
				EndContainer(),
 
				NWidget(WWT_FRAME, COLOUR_GREY, GOW_SCREENSHOT_FRAME), SetDataTip(STR_OPTIONS_SCREENSHOT_FORMAT, STR_NULL),
 
					NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_SCREENSHOT_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_SCREENSHOT_FORMAT_CBO, STR_OPTIONS_SCREENSHOT_FORMAT_TIP), SetPadding(14, 10, 10, 10),
 
					NWidget(NWID_SPACER), SetMinimalSize(0, 9),
 
				EndContainer(),
 
				NWidget(NWID_SPACER), SetFill(false, true),
 
			EndContainer(),
 
		EndContainer(),
 

	
 
		NWidget(WWT_FRAME, COLOUR_GREY, GOW_BASE_GRF_FRAME), SetDataTip(STR_OPTIONS_BASE_GRF, STR_NULL),
 
			NWidget(NWID_HORIZONTAL), SetPIP(10, 30, 10),
 
				NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_BASE_GRF_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_BASE_GRF_CBO, STR_OPTIONS_BASE_GRF_TIP), SetPadding(14, 0, 0, 0),
 
				NWidget(WWT_TEXT, COLOUR_GREY, GOW_BASE_GRF_STATUS), SetMinimalSize(150, 12), SetDataTip(STR_OPTIONS_BASE_GRF_STATUS, STR_NULL), SetPadding(14, 0, 0, 0),
 
			EndContainer(),
 
			NWidget(WWT_TEXT, COLOUR_GREY, GOW_BASE_GRF_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_OPTIONS_BASE_GRF_DESCRIPTION_TIP), SetPadding(6, 10, 10, 10),
 
		EndContainer(),
 
	EndContainer(),
 
};
 

	
 
static const WindowDesc _game_options_desc(
 
	WDP_CENTER, WDP_CENTER, 370, 243, 370, 243,
 
	WDP_CENTER, WDP_CENTER, 370, 249, 370, 249,
 
	WC_GAME_OPTIONS, WC_NONE,
 
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
 
	_game_options_widgets, _nested_game_options_widgets, lengthof(_nested_game_options_widgets)
 
);
 

	
 

	
0 comments (0 inline, 0 general)