mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-08 23:19:40 +00:00
(svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
This commit is contained in:
parent
8ad56c4229
commit
7039c84c6a
@ -999,6 +999,8 @@ static PatchEntry _patches_ui[] = {
|
|||||||
PatchEntry("gui.show_track_reservation"),
|
PatchEntry("gui.show_track_reservation"),
|
||||||
PatchEntry("gui.left_mouse_btn_scrolling"),
|
PatchEntry("gui.left_mouse_btn_scrolling"),
|
||||||
};
|
};
|
||||||
|
/** Interface subpage */
|
||||||
|
static PatchPage _patches_ui_page = {_patches_ui, lengthof(_patches_ui)};
|
||||||
|
|
||||||
static PatchEntry _patches_construction[] = {
|
static PatchEntry _patches_construction[] = {
|
||||||
PatchEntry("construction.build_on_slopes"),
|
PatchEntry("construction.build_on_slopes"),
|
||||||
@ -1014,6 +1016,8 @@ static PatchEntry _patches_construction[] = {
|
|||||||
PatchEntry("gui.default_signal_type"),
|
PatchEntry("gui.default_signal_type"),
|
||||||
PatchEntry("gui.cycle_signal_types"),
|
PatchEntry("gui.cycle_signal_types"),
|
||||||
};
|
};
|
||||||
|
/** Construction sub-page */
|
||||||
|
static PatchPage _patches_construction_page = {_patches_construction, lengthof(_patches_construction)};
|
||||||
|
|
||||||
static PatchEntry _patches_stations[] = {
|
static PatchEntry _patches_stations[] = {
|
||||||
PatchEntry("station.join_stations"),
|
PatchEntry("station.join_stations"),
|
||||||
@ -1030,6 +1034,8 @@ static PatchEntry _patches_stations[] = {
|
|||||||
PatchEntry("station.distant_join_stations"),
|
PatchEntry("station.distant_join_stations"),
|
||||||
PatchEntry("economy.station_noise_level"),
|
PatchEntry("economy.station_noise_level"),
|
||||||
};
|
};
|
||||||
|
/** Stations sub-page */
|
||||||
|
static PatchPage _patches_stations_page = {_patches_stations, lengthof(_patches_stations)};
|
||||||
|
|
||||||
static PatchEntry _patches_economy[] = {
|
static PatchEntry _patches_economy[] = {
|
||||||
PatchEntry("economy.inflation"),
|
PatchEntry("economy.inflation"),
|
||||||
@ -1048,6 +1054,8 @@ static PatchEntry _patches_economy[] = {
|
|||||||
PatchEntry("economy.larger_towns"),
|
PatchEntry("economy.larger_towns"),
|
||||||
PatchEntry("economy.initial_city_size"),
|
PatchEntry("economy.initial_city_size"),
|
||||||
};
|
};
|
||||||
|
/** Economy sub-page */
|
||||||
|
static PatchPage _patches_economy_page = {_patches_economy, lengthof(_patches_economy)};
|
||||||
|
|
||||||
static PatchEntry _patches_ai[] = {
|
static PatchEntry _patches_ai[] = {
|
||||||
PatchEntry("ai.ainew_active"),
|
PatchEntry("ai.ainew_active"),
|
||||||
@ -1057,6 +1065,8 @@ static PatchEntry _patches_ai[] = {
|
|||||||
PatchEntry("ai.ai_disable_veh_aircraft"),
|
PatchEntry("ai.ai_disable_veh_aircraft"),
|
||||||
PatchEntry("ai.ai_disable_veh_ship"),
|
PatchEntry("ai.ai_disable_veh_ship"),
|
||||||
};
|
};
|
||||||
|
/** AI sub-page */
|
||||||
|
static PatchPage _patches_ai_page = {_patches_ai, lengthof(_patches_ai)};
|
||||||
|
|
||||||
static PatchEntry _patches_vehicles[] = {
|
static PatchEntry _patches_vehicles[] = {
|
||||||
PatchEntry("vehicle.realistic_acceleration"),
|
PatchEntry("vehicle.realistic_acceleration"),
|
||||||
@ -1091,28 +1101,26 @@ static PatchEntry _patches_vehicles[] = {
|
|||||||
PatchEntry("order.timetabling"),
|
PatchEntry("order.timetabling"),
|
||||||
PatchEntry("vehicle.dynamic_engines"),
|
PatchEntry("vehicle.dynamic_engines"),
|
||||||
};
|
};
|
||||||
|
/** Vehicles sub-page */
|
||||||
|
static PatchPage _patches_vehicles_page = {_patches_vehicles, lengthof(_patches_vehicles)};
|
||||||
|
|
||||||
/** Array of pages (tabs), where each page holds a number of advanced settings. */
|
static PatchEntry _patches_main[] = {
|
||||||
static PatchPage _patches_page[] = {
|
PatchEntry(&_patches_ui_page, STR_CONFIG_PATCHES_GUI),
|
||||||
{_patches_ui, lengthof(_patches_ui)},
|
PatchEntry(&_patches_construction_page, STR_CONFIG_PATCHES_CONSTRUCTION),
|
||||||
{_patches_construction, lengthof(_patches_construction)},
|
PatchEntry(&_patches_vehicles_page, STR_CONFIG_PATCHES_VEHICLES),
|
||||||
{_patches_vehicles, lengthof(_patches_vehicles)},
|
PatchEntry(&_patches_stations_page, STR_CONFIG_PATCHES_STATIONS),
|
||||||
{_patches_stations, lengthof(_patches_stations)},
|
PatchEntry(&_patches_economy_page, STR_CONFIG_PATCHES_ECONOMY),
|
||||||
{_patches_economy, lengthof(_patches_economy)},
|
PatchEntry(&_patches_ai_page, STR_CONFIG_PATCHES_AI),
|
||||||
{_patches_ai, lengthof(_patches_ai)},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Main page, holding all advanced settings */
|
||||||
|
static PatchPage _patches_main_page = {_patches_main, lengthof(_patches_main)};
|
||||||
|
|
||||||
/** Widget numbers of config patches window */
|
/** Widget numbers of config patches window */
|
||||||
enum PatchesSelectionWidgets {
|
enum PatchesSelectionWidgets {
|
||||||
PATCHSEL_OPTIONSPANEL = 3, ///< Panel widget containing the option lists
|
PATCHSEL_OPTIONSPANEL = 2, ///< Panel widget containing the option lists
|
||||||
PATCHSEL_SCROLLBAR, ///< Scrollbar
|
PATCHSEL_SCROLLBAR, ///< Scrollbar
|
||||||
PATCHSEL_RESIZE, ///< Resize button
|
PATCHSEL_RESIZE, ///< Resize button
|
||||||
PATCHSEL_INTERFACE, ///< Button 'Interface'
|
|
||||||
PATCHSEL_CONSTRUCTION, ///< Button 'Construction'
|
|
||||||
PATCHSEL_VEHICLES, ///< Button 'Vehicles'
|
|
||||||
PATCHSEL_STATIONS, ///< Button 'Stations'
|
|
||||||
PATCHSEL_ECONOMY, ///< Button 'Economy'
|
|
||||||
PATCHSEL_COMPETITORS ///< Button 'Competitors'
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PatchesSelectionWindow : Window {
|
struct PatchesSelectionWindow : Window {
|
||||||
@ -1121,7 +1129,6 @@ struct PatchesSelectionWindow : Window {
|
|||||||
|
|
||||||
static GameSettings *patches_ptr; ///< Pointer to the game settings being displayed and modified
|
static GameSettings *patches_ptr; ///< Pointer to the game settings being displayed and modified
|
||||||
|
|
||||||
int page;
|
|
||||||
PatchEntry *valuewindow_entry; ///< If non-NULL, pointer to patch setting for which a value-entering window has been opened
|
PatchEntry *valuewindow_entry; ///< If non-NULL, pointer to patch setting for which a value-entering window has been opened
|
||||||
PatchEntry *clicked_entry; ///< If non-NULL, pointer to a clicked numeric patch setting (with a depressed left or right button)
|
PatchEntry *clicked_entry; ///< If non-NULL, pointer to a clicked numeric patch setting (with a depressed left or right button)
|
||||||
|
|
||||||
@ -1140,36 +1147,28 @@ struct PatchesSelectionWindow : Window {
|
|||||||
|
|
||||||
/* Build up the dynamic settings-array only once per OpenTTD session */
|
/* Build up the dynamic settings-array only once per OpenTTD session */
|
||||||
if (first_time) {
|
if (first_time) {
|
||||||
for (PatchPage *page = &_patches_page[0]; page != endof(_patches_page); page++) {
|
_patches_main_page.Init();
|
||||||
page->Init();
|
|
||||||
}
|
|
||||||
first_time = false;
|
first_time = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->page = 0;
|
|
||||||
this->valuewindow_entry = NULL; // No patch entry for which a entry window is opened
|
this->valuewindow_entry = NULL; // No patch entry for which a entry window is opened
|
||||||
this->clicked_entry = NULL; // No numeric patch setting buttons are depressed
|
this->clicked_entry = NULL; // No numeric patch setting buttons are depressed
|
||||||
this->vscroll.pos = 0;
|
this->vscroll.pos = 0;
|
||||||
this->vscroll.cap = (this->widget[PATCHSEL_OPTIONSPANEL].bottom - this->widget[PATCHSEL_OPTIONSPANEL].top - 8) / SETTING_HEIGHT;
|
this->vscroll.cap = (this->widget[PATCHSEL_OPTIONSPANEL].bottom - this->widget[PATCHSEL_OPTIONSPANEL].top - 8) / SETTING_HEIGHT;
|
||||||
SetVScrollCount(this, _patches_page[this->page].Length());
|
SetVScrollCount(this, _patches_main_page.Length());
|
||||||
|
|
||||||
this->resize.step_height = SETTING_HEIGHT;
|
this->resize.step_height = SETTING_HEIGHT;
|
||||||
this->resize.height = this->height;
|
this->resize.height = this->height;
|
||||||
this->resize.step_width = 1;
|
this->resize.step_width = 1;
|
||||||
this->resize.width = this->width;
|
this->resize.width = this->width;
|
||||||
|
|
||||||
this->LowerWidget(this->page + PATCHSEL_INTERFACE); // Depress button of currently selected page
|
|
||||||
|
|
||||||
this->FindWindowPlacementAndResize(desc);
|
this->FindWindowPlacementAndResize(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnPaint()
|
virtual void OnPaint()
|
||||||
{
|
{
|
||||||
const PatchPage *page = &_patches_page[this->page];
|
|
||||||
|
|
||||||
/* Set up selected category */
|
|
||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
page->Draw(patches_ptr, SETTINGTREE_LEFT_OFFSET, SETTINGTREE_TOP_OFFSET,
|
_patches_main_page.Draw(patches_ptr, SETTINGTREE_LEFT_OFFSET, SETTINGTREE_TOP_OFFSET,
|
||||||
this->vscroll.pos, this->vscroll.pos + this->vscroll.cap);
|
this->vscroll.pos, this->vscroll.pos + this->vscroll.cap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1183,9 +1182,8 @@ struct PatchesSelectionWindow : Window {
|
|||||||
byte btn = this->vscroll.pos + y / SETTING_HEIGHT; // Compute which setting is selected
|
byte btn = this->vscroll.pos + y / SETTING_HEIGHT; // Compute which setting is selected
|
||||||
if (y % SETTING_HEIGHT > SETTING_HEIGHT - 2) return; // Clicked too low at the setting
|
if (y % SETTING_HEIGHT > SETTING_HEIGHT - 2) return; // Clicked too low at the setting
|
||||||
|
|
||||||
const PatchPage *page = &_patches_page[this->page];
|
|
||||||
uint cur_row = 0;
|
uint cur_row = 0;
|
||||||
PatchEntry *pe = page->FindEntry(btn, &cur_row);
|
PatchEntry *pe = _patches_main_page.FindEntry(btn, &cur_row);
|
||||||
|
|
||||||
if (pe == NULL) return; // Clicked below the last setting of the page
|
if (pe == NULL) return; // Clicked below the last setting of the page
|
||||||
|
|
||||||
@ -1195,7 +1193,7 @@ struct PatchesSelectionWindow : Window {
|
|||||||
if ((pe->flags & PEF_KIND_MASK) == PEF_SUBTREE_KIND) {
|
if ((pe->flags & PEF_KIND_MASK) == PEF_SUBTREE_KIND) {
|
||||||
pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page
|
pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page
|
||||||
|
|
||||||
SetVScrollCount(this, _patches_page[this->page].Length());
|
SetVScrollCount(this, _patches_main_page.Length());
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1273,16 +1271,6 @@ struct PatchesSelectionWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case PATCHSEL_INTERFACE: case PATCHSEL_CONSTRUCTION: case PATCHSEL_VEHICLES:
|
|
||||||
case PATCHSEL_STATIONS: case PATCHSEL_ECONOMY: case PATCHSEL_COMPETITORS:
|
|
||||||
this->RaiseWidget(this->page + PATCHSEL_INTERFACE);
|
|
||||||
this->page = widget - PATCHSEL_INTERFACE;
|
|
||||||
this->LowerWidget(this->page + PATCHSEL_INTERFACE);
|
|
||||||
SetVScrollCount(this, _patches_page[this->page].Length());
|
|
||||||
DeleteWindowById(WC_QUERY_STRING, 0);
|
|
||||||
this->SetDirty();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1314,33 +1302,25 @@ struct PatchesSelectionWindow : Window {
|
|||||||
virtual void OnResize(Point new_size, Point delta)
|
virtual void OnResize(Point new_size, Point delta)
|
||||||
{
|
{
|
||||||
this->vscroll.cap += delta.y / SETTING_HEIGHT;
|
this->vscroll.cap += delta.y / SETTING_HEIGHT;
|
||||||
SetVScrollCount(this, _patches_page[this->page].Length());
|
SetVScrollCount(this, _patches_main_page.Length());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GameSettings *PatchesSelectionWindow::patches_ptr = NULL;
|
GameSettings *PatchesSelectionWindow::patches_ptr = NULL;
|
||||||
const int PatchesSelectionWindow::SETTINGTREE_LEFT_OFFSET = 5;
|
const int PatchesSelectionWindow::SETTINGTREE_LEFT_OFFSET = 5;
|
||||||
const int PatchesSelectionWindow::SETTINGTREE_TOP_OFFSET = 47;
|
const int PatchesSelectionWindow::SETTINGTREE_TOP_OFFSET = 19;
|
||||||
|
|
||||||
static const Widget _patches_selection_widgets[] = {
|
static const Widget _patches_selection_widgets[] = {
|
||||||
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||||
{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 396, 0, 13, STR_CONFIG_PATCHES_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 411, 0, 13, STR_CONFIG_PATCHES_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||||
{ WWT_PANEL, RESIZE_RIGHT, COLOUR_MAUVE, 0, 396, 14, 41, 0x0, STR_NULL},
|
{ WWT_PANEL, RESIZE_RB, COLOUR_MAUVE, 0, 399, 14, 187, 0x0, STR_NULL}, // PATCHSEL_OPTIONSPANEL
|
||||||
{ WWT_PANEL, RESIZE_RB, COLOUR_MAUVE, 0, 384, 42, 215, 0x0, STR_NULL}, // PATCHSEL_OPTIONSPANEL
|
{ WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 400, 411, 14, 175, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // PATCHSEL_SCROLLBAR
|
||||||
{ WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 385, 396, 42, 203, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // PATCHSEL_SCROLLBAR
|
{ WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_MAUVE, 400, 411, 176, 187, 0x0, STR_RESIZE_BUTTON}, // PATCHSEL_RESIZE
|
||||||
{ WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_MAUVE, 385, 396, 204, 215, 0x0, STR_RESIZE_BUTTON}, // PATCHSEL_RESIZE
|
|
||||||
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 100, 16, 27, STR_CONFIG_PATCHES_GUI, STR_NULL}, // PATCHSEL_INTERFACE
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 101, 191, 16, 27, STR_CONFIG_PATCHES_CONSTRUCTION, STR_NULL}, // PATCHSEL_CONSTRUCTION
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 192, 283, 16, 27, STR_CONFIG_PATCHES_VEHICLES, STR_NULL}, // PATCHSEL_VEHICLES
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 284, 375, 16, 27, STR_CONFIG_PATCHES_STATIONS, STR_NULL}, // PATCHSEL_STATIONS
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 100, 28, 39, STR_CONFIG_PATCHES_ECONOMY, STR_NULL}, // PATCHSEL_ECONOMY
|
|
||||||
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 101, 191, 28, 39, STR_CONFIG_PATCHES_AI, STR_NULL}, // PATCHSEL_COMPETITORS
|
|
||||||
{ WIDGETS_END},
|
{ WIDGETS_END},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const WindowDesc _patches_selection_desc = {
|
static const WindowDesc _patches_selection_desc = {
|
||||||
WDP_CENTER, WDP_CENTER, 397, 216, 397, 425,
|
WDP_CENTER, WDP_CENTER, 412, 188, 412, 397,
|
||||||
WC_GAME_OPTIONS, WC_NONE,
|
WC_GAME_OPTIONS, WC_NONE,
|
||||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
|
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
|
||||||
_patches_selection_widgets,
|
_patches_selection_widgets,
|
||||||
|
Loading…
Reference in New Issue
Block a user