diff -r 63d5d2892b19 src/lang/english.txt --- a/src/lang/english.txt Sun Nov 23 12:08:48 2008 +0100 +++ b/src/lang/english.txt Sun Nov 23 13:05:15 2008 +0100 @@ -1212,6 +1212,12 @@ STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Initial city size multiplier: {ORANGE}{STRING1} STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Remove absurd road-elements during the road construction +STR_CONFIG_PATCHES_TITLE_INTERFACE :{ORANGE}Interface +STR_CONFIG_PATCHES_TITLE_CONSTRUCTION :{ORANGE}Construction +STR_CONFIG_PATCHES_TITLE_VEHICLES :{ORANGE}Vehicles +STR_CONFIG_PATCHES_TITLE_STATIONS :{ORANGE}Stations +STR_CONFIG_PATCHES_TITLE_ECONOMY :{ORANGE}Economy +STR_CONFIG_PATCHES_TITLE_COMPETITORS :{ORANGE}Competitors STR_CONFIG_PATCHES_TITLE_SIGNALS :{ORANGE}Signals STR_CONFIG_PATCHES_DISABLED :disabled diff -r 63d5d2892b19 src/settings_gui.cpp --- a/src/settings_gui.cpp Sun Nov 23 12:08:48 2008 +0100 +++ b/src/settings_gui.cpp Sun Nov 23 13:05:15 2008 +0100 @@ -982,6 +982,8 @@ return cur_row; } +/* == INTERFACE PAGE == */ + static PatchEntry _patches_ui[] = { PatchEntry("gui.vehicle_speed"), PatchEntry("gui.status_long_date"), @@ -1014,6 +1016,9 @@ PatchEntry("gui.always_build_infrastructure"), PatchEntry("gui.show_track_reservation"), }; +static PatchPage _patches_ui_page = {_patches_ui, lengthof(_patches_ui)}; + +/* == CONSTRUCTION PAGE == */ static PatchEntry _patches_construction_signals[] = { PatchEntry("gui.enable_signal_gui"), @@ -1036,6 +1041,9 @@ PatchEntry(&_patches_construction_signals_page, STR_CONFIG_PATCHES_TITLE_SIGNALS), PatchEntry("game_creation.oil_refinery_limit"), }; +static PatchPage _patches_construction_page = {_patches_construction, lengthof(_patches_construction)}; + +/* == STATIONS PAGE == */ static PatchEntry _patches_stations[] = { PatchEntry("station.join_stations"), @@ -1051,6 +1059,9 @@ PatchEntry("station.adjacent_stations"), PatchEntry("economy.station_noise_level"), }; +static PatchPage _patches_stations_page = {_patches_stations, lengthof(_patches_stations)}; + +/* == ECONOMY PAGE == */ static PatchEntry _patches_economy[] = { PatchEntry("economy.inflation"), @@ -1070,6 +1081,9 @@ PatchEntry("economy.larger_towns"), PatchEntry("economy.initial_city_size"), }; +static PatchPage _patches_economy_page = {_patches_economy, lengthof(_patches_economy)}; + +/* == COMPETITORS PAGE == */ static PatchEntry _patches_ai[] = { PatchEntry("ai.ainew_active"), @@ -1079,6 +1093,9 @@ PatchEntry("ai.ai_disable_veh_aircraft"), PatchEntry("ai.ai_disable_veh_ship"), }; +static PatchPage _patches_ai_page = {_patches_ai, lengthof(_patches_ai)}; + +/* == VEHICLES PAGE == */ static PatchEntry _patches_vehicles[] = { PatchEntry("vehicle.realistic_acceleration"), @@ -1113,15 +1130,22 @@ PatchEntry("order.timetabling"), PatchEntry("vehicle.dynamic_engines"), }; +static PatchPage _patches_vehicles_page = {_patches_vehicles, lengthof(_patches_vehicles)}; + +/* == MAIN PAGE == */ + +static PatchEntry _patches_main[] = { + PatchEntry(&_patches_ui_page, STR_CONFIG_PATCHES_TITLE_INTERFACE), + PatchEntry(&_patches_construction_page, STR_CONFIG_PATCHES_TITLE_CONSTRUCTION), + PatchEntry(&_patches_vehicles_page, STR_CONFIG_PATCHES_TITLE_VEHICLES), + PatchEntry(&_patches_stations_page, STR_CONFIG_PATCHES_TITLE_STATIONS), + PatchEntry(&_patches_economy_page, STR_CONFIG_PATCHES_TITLE_ECONOMY), + PatchEntry(&_patches_ai_page, STR_CONFIG_PATCHES_TITLE_COMPETITORS), +}; /** Array of pages (tabs), where each page holds a number of advanced settings. */ static PatchPage _patches_page[] = { - {_patches_ui, lengthof(_patches_ui)}, - {_patches_construction, lengthof(_patches_construction)}, - {_patches_vehicles, lengthof(_patches_vehicles)}, - {_patches_stations, lengthof(_patches_stations)}, - {_patches_economy, lengthof(_patches_economy)}, - {_patches_ai, lengthof(_patches_ai)}, + {_patches_main, lengthof(_patches_main)}, }; /** Widget numbers of config patches window */ @@ -1188,49 +1212,48 @@ virtual void OnClick(Point pt, int widget) { - switch (widget) { - case PATCHSEL_OPTIONSPANEL: { - int y = pt.y - SETTINGTREE_TOP_OFFSET; // Shift y coordinate - if (y < 0) return; // Clicked above first entry + if (widget == PATCHSEL_OPTIONSPANEL) { + int y = pt.y - SETTINGTREE_TOP_OFFSET; // Shift y coordinate + if (y < 0) return; // Clicked above first entry - 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 + 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 - const PatchPage *page = &_patches_page[this->page]; - uint cur_row = 0; - PatchEntry *pe = page->FindEntry(btn, &cur_row); + const PatchPage *page = &_patches_page[this->page]; + uint cur_row = 0; + PatchEntry *pe = 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 - int x = pt.x - SETTINGTREE_LEFT_OFFSET - (pe->level + 1) * LEVEL_WIDTH; // Shift x coordinate - if (x < 0) return; // Clicked left of the entry + int x = pt.x - SETTINGTREE_LEFT_OFFSET - (pe->level + 1) * LEVEL_WIDTH; // Shift x coordinate + if (x < 0) return; // Clicked left of the entry - if ((pe->flags & PEF_KIND_MASK) == PEF_SUBTREE_KIND) { - pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page + if ((pe->flags & PEF_KIND_MASK) == PEF_SUBTREE_KIND) { + pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page - SetVScrollCount(this, page->Length()); // Update the scrollbar and redraw - this->SetDirty(); - return; - } + SetVScrollCount(this, page->Length()); // Update the scrollbar and redraw + this->SetDirty(); + return; + } - assert((pe->flags & PEF_KIND_MASK) == PEF_SETTING_KIND); - const SettingDesc *sd = pe->d.entry.setting; + assert((pe->flags & PEF_KIND_MASK) == PEF_SETTING_KIND); + const SettingDesc *sd = pe->d.entry.setting; - /* return if action is only active in network, or only settable by server */ - if (!(sd->save.conv & SLF_NETWORK_NO) && _networking && !_network_server) return; - if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return; - if ((sd->desc.flags & SGF_NO_NETWORK) && _networking) return; + /* return if action is only active in network, or only settable by server */ + if (!(sd->save.conv & SLF_NETWORK_NO) && _networking && !_network_server) return; + if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return; + if ((sd->desc.flags & SGF_NO_NETWORK) && _networking) return; - void *var = GetVariableAddress(patches_ptr, &sd->save); - int32 value = (int32)ReadValue(var, sd->save.conv); + void *var = GetVariableAddress(patches_ptr, &sd->save); + int32 value = (int32)ReadValue(var, sd->save.conv); - /* clicked on the icon on the left side. Either scroller or bool on/off */ - if (x < 21) { - const SettingDescBase *sdb = &sd->desc; - int32 oldvalue = value; + /* clicked on the icon on the left side. Either scroller or bool on/off */ + if (x < 21) { + const SettingDescBase *sdb = &sd->desc; + int32 oldvalue = value; - switch (sdb->cmd) { + switch (sdb->cmd) { case SDT_BOOLX: value ^= 1; break; case SDT_NUMX: { /* Add a dynamic step-size to the scroller. In a maximum of @@ -1267,24 +1290,23 @@ } } break; default: NOT_REACHED(); - } + } - if (value != oldvalue) { - SetPatchValue(pe->d.entry.index, value); - this->SetDirty(); - } - } else { - /* only open editbox for types that its sensible for */ - if (sd->desc.cmd != SDT_BOOLX && !(sd->desc.flags & SGF_MULTISTRING)) { - /* Show the correct currency-translated value */ - if (sd->desc.flags & SGF_CURRENCY) value *= _currency->rate; + if (value != oldvalue) { + SetPatchValue(pe->d.entry.index, value); + this->SetDirty(); + } + } else { + /* only open editbox for types that its sensible for */ + if (sd->desc.cmd != SDT_BOOLX && !(sd->desc.flags & SGF_MULTISTRING)) { + /* Show the correct currency-translated value */ + if (sd->desc.flags & SGF_CURRENCY) value *= _currency->rate; - valuewindow_entry = pe; - SetDParam(0, value); - ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_CONFIG_PATCHES_QUERY_CAPT, 10, 100, this, CS_NUMERAL, QSF_NONE); - } + valuewindow_entry = pe; + SetDParam(0, value); + ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_CONFIG_PATCHES_QUERY_CAPT, 10, 100, this, CS_NUMERAL, QSF_NONE); } - } break; + } } } @@ -1326,15 +1348,15 @@ static const Widget _patches_selection_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 411, 0, 13, STR_CONFIG_PATCHES_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PANEL, RESIZE_BOTTOM, COLOUR_MAUVE, 0, 399, 14, 187, 0x0, STR_NULL}, // PATCHSEL_OPTIONSPANEL -{ WWT_SCROLLBAR, RESIZE_BOTTOM, COLOUR_MAUVE, 400, 411, 14, 175, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // PATCHSEL_SCROLLBAR -{ WWT_RESIZEBOX, RESIZE_TB, COLOUR_MAUVE, 400, 411, 176, 187, 0x0, STR_RESIZE_BUTTON}, // PATCHSEL_RESIZE +{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 426, 0, 13, STR_CONFIG_PATCHES_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PANEL, RESIZE_BOTTOM, COLOUR_MAUVE, 0, 414, 14, 187, 0x0, STR_NULL}, // PATCHSEL_OPTIONSPANEL +{ WWT_SCROLLBAR, RESIZE_BOTTOM, COLOUR_MAUVE, 415, 426, 14, 175, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // PATCHSEL_SCROLLBAR +{ WWT_RESIZEBOX, RESIZE_TB, COLOUR_MAUVE, 415, 426, 176, 187, 0x0, STR_RESIZE_BUTTON}, // PATCHSEL_RESIZE { WIDGETS_END}, }; static const WindowDesc _patches_selection_desc = { - WDP_CENTER, WDP_CENTER, 412, 188, 412, 188, + WDP_CENTER, WDP_CENTER, 427, 188, 427, 188, WC_GAME_OPTIONS, WC_NONE, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, _patches_selection_widgets,