Changeset - r10671:380271301e42
[Not reviewed]
master
0 2 0
rubidium - 16 years ago 2009-01-10 17:35:19
rubidium@openttd.org
(svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
2 files changed with 120 insertions and 43 deletions:
0 comments (0 inline, 0 general)
src/lang/english.txt
Show inline comments
 
@@ -1173,96 +1173,107 @@ STR_CONFIG_PATCHES_STARTING_YEAR        
 
STR_CONFIG_PATCHES_SMOOTH_ECONOMY                               :{LTBLUE}Enable smooth economy (more, smaller changes)
 
STR_CONFIG_PATCHES_ALLOW_SHARES                                 :{LTBLUE}Allow buying shares from other companies
 
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY                         :{LTBLUE}When dragging, place signals every: {ORANGE}{STRING1} tile(s)
 
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE                  :{LTBLUE}Automatically build semaphores before: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI                            :{LTBLUE}Enable the signal GUI: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_DEFAULT_SIGNAL_TYPE                          :{LTBLUE}Signal type to build by default: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_DEFAULT_SIGNAL_NORMAL                        :Block signals
 
STR_CONFIG_PATCHES_DEFAULT_SIGNAL_PBS                           :Path signals
 
STR_CONFIG_PATCHES_DEFAULT_SIGNAL_PBSOWAY                       :One-way path signals
 
STR_CONFIG_PATCHES_CYCLE_SIGNAL_TYPES                           :{LTBLUE}Cycle through signal types: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_CYCLE_SIGNAL_NORMAL                          :Block signals only
 
STR_CONFIG_PATCHES_CYCLE_SIGNAL_PBS                             :Path signals only
 
STR_CONFIG_PATCHES_CYCLE_SIGNAL_ALL                             :All
 

	
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID                          :{WHITE}The town layout "no more roads" isn't valid in the scenario editor
 
STR_CONFIG_PATCHES_TOWN_LAYOUT                                  :{LTBLUE}Select town-road layout: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS                         :no more roads
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT                          :default
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS                     :better roads
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID                         :2x2 grid
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID                         :3x3 grid
 
STR_CONFIG_PATCHES_TOWN_LAYOUT_RANDOM                           :random
 

	
 
STR_CONFIG_PATCHES_TOOLBAR_POS                                  :{LTBLUE}Position of main toolbar: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT                             :Left
 
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER                           :Centre
 
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT                            :Right
 
STR_CONFIG_PATCHES_SNAP_RADIUS                                  :{LTBLUE}Window snap radius: {ORANGE}{STRING1} px
 
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED                         :{LTBLUE}Window snap radius: {ORANGE}disabled
 
STR_CONFIG_PATCHES_SOFT_LIMIT                                   :{LTBLUE}Window soft limit (non-sticky): {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_SOFT_LIMIT_DISABLED                          :{LTBLUE}Window soft limit (non-sticky): {ORANGE}disabled
 
STR_CONFIG_PATCHES_TOWN_GROWTH                                  :{LTBLUE}Town growth speed: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_TOWN_GROWTH_NONE                             :None
 
STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW                             :Slow
 
STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL                           :Normal
 
STR_CONFIG_PATCHES_TOWN_GROWTH_FAST                             :Fast
 
STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST                        :Very fast
 
STR_CONFIG_PATCHES_LARGER_TOWNS                                 :{LTBLUE}Proportion of towns that will become cities: {ORANGE}1 in {STRING1}
 
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED                        :{LTBLUE}Proportion of towns that will become cities: {ORANGE}None
 
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_GUI                                          :{ORANGE}Interface
 
STR_CONFIG_PATCHES_CONSTRUCTION                                 :{ORANGE}Construction
 
STR_CONFIG_PATCHES_VEHICLES                                     :{ORANGE}Vehicles
 
STR_CONFIG_PATCHES_STATIONS                                     :{ORANGE}Stations
 
STR_CONFIG_PATCHES_ECONOMY                                      :{ORANGE}Economy
 
STR_CONFIG_PATCHES_AI                                           :{ORANGE}Competitors
 
STR_CONFIG_PATCHES_DISPLAY_OPTIONS                              :{ORANGE}Display options
 
STR_CONFIG_PATCHES_INTERACTION                                  :{ORANGE}Interaction
 
STR_CONFIG_PATCHES_CONSTRUCTION_SIGNALS                         :{ORANGE}Signals
 
STR_CONFIG_PATCHES_STATIONS_CARGOHANDLING                       :{ORANGE}Cargo handling
 
STR_CONFIG_PATCHES_AI_NPC                                       :{ORANGE}Computer players
 
STR_CONFIG_PATCHES_VEHICLES_AUTORENEW                           :{ORANGE}Autorenew
 
STR_CONFIG_PATCHES_VEHICLES_SERVICING                           :{ORANGE}Servicing
 
STR_CONFIG_PATCHES_VEHICLES_ROUTING                             :{ORANGE}Routing
 
STR_CONFIG_PATCHES_VEHICLES_TRAINS                              :{ORANGE}Trains
 
STR_CONFIG_PATCHES_ECONOMY_TOWNS                                :{ORANGE}Towns
 
STR_CONFIG_PATCHES_ECONOMY_INDUSTRIES                           :{ORANGE}Industries
 

	
 
STR_CONFIG_PATCHES_DISABLED                                     :disabled
 
STR_CONFIG_PATCHES_INT32                                        :{NUM}
 
STR_CONFIG_PATCHES_CURRENCY                                     :{CURRENCY}
 

	
 
STR_CONFIG_PATCHES_QUERY_CAPT                                   :{WHITE}Change setting value
 

	
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS                        :{LTBLUE}Pathfinder for trains: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP                    :NTP {RED}(Not recommended)
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF                    :NPF
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF                   :YAPF {BLUE}(Recommended)
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH                       :{LTBLUE}Pathfinder for road vehicles: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF                   :Original {RED}(Not recommended)
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF                   :NPF
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF                  :YAPF {BLUE}(Recommended)
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS                         :{LTBLUE}Pathfinder for ships: {ORANGE}{STRING1}
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF                     :Original {BLUE}(Recommended)
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF                     :NPF
 
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF                    :YAPF {RED}(Not recommended)
 

	
 
STR_TEMPERATE_LANDSCAPE                                         :Temperate landscape
 
STR_SUB_ARCTIC_LANDSCAPE                                        :Sub-arctic landscape
 
STR_SUB_TROPICAL_LANDSCAPE                                      :Sub-tropical landscape
 
STR_TOYLAND_LANDSCAPE                                           :Toyland landscape
 

	
 
STR_CHEATS                                                      :{WHITE}Cheats
 
STR_CHEATS_TIP                                                  :{BLACK}Checkboxes indicate if you have used this cheat before
 
STR_CHEATS_WARNING                                              :{BLACK}Warning! You are about to betray your fellow competitors. Keep in mind that such a disgrace will be remembered for eternity.
 
STR_CHEAT_MONEY                                                 :{LTBLUE}Increase money by {CURRENCY}
 
STR_CHEAT_CHANGE_COMPANY                                        :{LTBLUE}Playing as company: {ORANGE}{COMMA}
 
STR_CHEAT_EXTRA_DYNAMITE                                        :{LTBLUE}Magic bulldozer (remove industries, unmovables): {ORANGE}{STRING1}
 
STR_CHEAT_CROSSINGTUNNELS                                       :{LTBLUE}Tunnels may cross each other: {ORANGE}{STRING1}
 
STR_CHEAT_BUILD_IN_PAUSE                                        :{LTBLUE}Build while in pause mode: {ORANGE}{STRING1}
 
STR_CHEAT_NO_JETCRASH                                           :{LTBLUE}Jetplanes will not crash (frequently) on small airports: {ORANGE} {STRING}
 
STR_CHEAT_SWITCH_CLIMATE                                        :{LTBLUE}Switch climate: {ORANGE} {STRING}
 
STR_CHEAT_CHANGE_DATE                                           :{LTBLUE}Change date: {ORANGE} {DATE_SHORT}
 
STR_CHEAT_SETUP_PROD                                            :{LTBLUE}Enable modifying production values: {ORANGE}{STRING1}
 

	
 
STR_HEADING_FOR_WAYPOINT                                        :{LTBLUE}Heading for {WAYPOINT}
 
STR_HEADING_FOR_WAYPOINT_VEL                                    :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY}
 

	
 
STR_GO_TO_WAYPOINT                                              :Go via {WAYPOINT}
 
STR_GO_NON_STOP_TO_WAYPOINT                                     :Go non-stop via {WAYPOINT}
 

	
 
STR_WAYPOINTNAME_CITY                                           :Waypoint {TOWN}
 
STR_WAYPOINTNAME_CITY_SERIAL                                    :Waypoint {TOWN} #{COMMA}
 
STR_LANDINFO_WAYPOINT                                           :Waypoint
 

	
src/settings_gui.cpp
Show inline comments
 
@@ -944,231 +944,297 @@ uint PatchPage::Length() const
 
 * Find the patch entry at row number \a row_num
 
 * @param row_num Index of entry to return
 
 * @param cur_row Variable used for keeping track of the current row number. Should point to memory initialized to \c 0 when first called.
 
 * @return The requested patch entry or \c NULL if it does not exist
 
 */
 
PatchEntry *PatchPage::FindEntry(uint row_num, uint *cur_row) const
 
{
 
	PatchEntry *pe = NULL;
 

	
 
	for (uint field = 0; field < this->num; field++) {
 
		pe = this->entries[field].FindEntry(row_num, cur_row);
 
		if (pe != NULL) {
 
			break;
 
		}
 
	}
 
	return pe;
 
}
 

	
 
/**
 
 * Draw a selected part of the settings page.
 
 *
 
 * The scrollbar uses rows of the page, while the page data strucure is a tree of #PatchPage and #PatchEntry objects.
 
 * As a result, the drawing routing traverses the tree from top to bottom, counting rows in \a cur_row until it reaches \a first_row.
 
 * Then it enables drawing rows while traversing until \a max_row is reached, at which point drawing is terminated.
 
 *
 
 * @param patches_ptr Pointer to current values of all settings
 
 * @param base_x      Left-most position in window/panel to start drawing of each setting row
 
 * @param base_y      Upper-most position in window/panel to start drawing of row number \a first_row
 
 * @param first_row   Number of first row to draw
 
 * @param max_row     Row-number to stop drawing (the row-number of the row below the last row to draw)
 
 * @param cur_row     Current row number (internal variable)
 
 * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field)
 
 * @return Row number of the next row to draw
 
 */
 
uint PatchPage::Draw(GameSettings *patches_ptr, int base_x, int base_y, uint first_row, uint max_row, uint cur_row, uint parent_last) const
 
{
 
	if (cur_row >= max_row) return cur_row;
 

	
 
	for (uint i = 0; i < this->num; i++) {
 
		cur_row = this->entries[i].Draw(patches_ptr, base_x, base_y, first_row, max_row, cur_row, parent_last);
 
		if (cur_row >= max_row) {
 
			break;
 
		}
 
	}
 
	return cur_row;
 
}
 

	
 

	
 
static PatchEntry _patches_ui[] = {
 
static PatchEntry _patches_ui_display[] = {
 
	PatchEntry("gui.vehicle_speed"),
 
	PatchEntry("gui.status_long_date"),
 
	PatchEntry("gui.date_format_in_default_names"),
 
	PatchEntry("gui.show_finances"),
 
	PatchEntry("gui.population_in_label"),
 
	PatchEntry("gui.measure_tooltip"),
 
	PatchEntry("gui.loading_indicators"),
 
	PatchEntry("gui.liveries"),
 
	PatchEntry("gui.show_track_reservation"),
 
};
 
/** Display options sub-page */
 
static PatchPage _patches_ui_display_page = {_patches_ui_display, lengthof(_patches_ui_display)};
 

	
 
static PatchEntry _patches_ui_interaction[] = {
 
	PatchEntry("gui.autoscroll"),
 
	PatchEntry("gui.reverse_scroll"),
 
	PatchEntry("gui.smooth_scroll"),
 
	PatchEntry("gui.errmsg_duration"),
 
	PatchEntry("gui.toolbar_pos"),
 
	PatchEntry("gui.measure_tooltip"),
 
	PatchEntry("gui.window_snap_radius"),
 
	PatchEntry("gui.window_soft_limit"),
 
	PatchEntry("gui.population_in_label"),
 
	PatchEntry("gui.link_terraform_toolbar"),
 
	PatchEntry("gui.liveries"),
 
	PatchEntry("gui.prefer_teamchat"),
 
	/* While the horizontal scrollwheel scrolling is written as general code, only
 
	 *  the cocoa (OSX) driver generates input for it.
 
	 *  Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */
 
	PatchEntry("gui.scrollwheel_scrolling"),
 
	PatchEntry("gui.scrollwheel_multiplier"),
 
#ifdef __APPLE__
 
	/* We might need to emulate a right mouse button on mac */
 
	PatchEntry("gui.right_mouse_btn_emulation"),
 
#endif
 
	PatchEntry("gui.left_mouse_btn_scrolling"),
 
};
 
/** Interaction sub-page */
 
static PatchPage _patches_ui_interaction_page = {_patches_ui_interaction, lengthof(_patches_ui_interaction)};
 

	
 
static PatchEntry _patches_ui[] = {
 
	PatchEntry(&_patches_ui_display_page, STR_CONFIG_PATCHES_DISPLAY_OPTIONS),
 
	PatchEntry(&_patches_ui_interaction_page, STR_CONFIG_PATCHES_INTERACTION),
 
	PatchEntry("gui.show_finances"),
 
	PatchEntry("gui.errmsg_duration"),
 
	PatchEntry("gui.toolbar_pos"),
 
	PatchEntry("gui.pause_on_newgame"),
 
	PatchEntry("gui.advanced_vehicle_list"),
 
	PatchEntry("gui.loading_indicators"),
 
	PatchEntry("gui.timetable_in_ticks"),
 
	PatchEntry("gui.quick_goto"),
 
	PatchEntry("gui.default_rail_type"),
 
	PatchEntry("gui.always_build_infrastructure"),
 
	PatchEntry("gui.persistent_buildingtools"),
 
	PatchEntry("gui.show_track_reservation"),
 
	PatchEntry("gui.left_mouse_btn_scrolling"),
 
};
 
/** Interface subpage */
 
static PatchPage _patches_ui_page = {_patches_ui, lengthof(_patches_ui)};
 

	
 
static PatchEntry _patches_construction_signals[] = {
 
	PatchEntry("construction.signal_side"),
 
	PatchEntry("gui.enable_signal_gui"),
 
	PatchEntry("gui.drag_signals_density"),
 
	PatchEntry("gui.semaphore_build_before"),
 
	PatchEntry("gui.default_signal_type"),
 
	PatchEntry("gui.cycle_signal_types"),
 
};
 
/** Signals subpage */
 
static PatchPage _patches_construction_signals_page = {_patches_construction_signals, lengthof(_patches_construction_signals)};
 

	
 
static PatchEntry _patches_construction[] = {
 
	PatchEntry(&_patches_construction_signals_page, STR_CONFIG_PATCHES_CONSTRUCTION_SIGNALS),
 
	PatchEntry("construction.build_on_slopes"),
 
	PatchEntry("construction.autoslope"),
 
	PatchEntry("construction.extra_dynamite"),
 
	PatchEntry("construction.longbridges"),
 
	PatchEntry("construction.signal_side"),
 
	PatchEntry("station.always_small_airport"),
 
	PatchEntry("gui.enable_signal_gui"),
 
	PatchEntry("gui.drag_signals_density"),
 
	PatchEntry("game_creation.oil_refinery_limit"),
 
	PatchEntry("gui.semaphore_build_before"),
 
	PatchEntry("gui.default_signal_type"),
 
	PatchEntry("gui.cycle_signal_types"),
 
};
 
/** Construction sub-page */
 
static PatchPage _patches_construction_page = {_patches_construction, lengthof(_patches_construction)};
 

	
 
static PatchEntry _patches_stations_cargo[] = {
 
	PatchEntry("order.improved_load"),
 
	PatchEntry("order.gradual_loading"),
 
	PatchEntry("order.selectgoods"),
 
};
 
/** Cargo handling sub-page */
 
static PatchPage _patches_stations_cargo_page = {_patches_stations_cargo, lengthof(_patches_stations_cargo)};
 

	
 
static PatchEntry _patches_stations[] = {
 
	PatchEntry(&_patches_stations_cargo_page, STR_CONFIG_PATCHES_STATIONS_CARGOHANDLING),
 
	PatchEntry("station.join_stations"),
 
	PatchEntry("order.improved_load"),
 
	PatchEntry("order.selectgoods"),
 
	PatchEntry("gui.new_nonstop"),
 
	PatchEntry("station.nonuniform_stations"),
 
	PatchEntry("station.station_spread"),
 
	PatchEntry("order.serviceathelipad"),
 
	PatchEntry("station.modified_catchment"),
 
	PatchEntry("order.gradual_loading"),
 
	PatchEntry("construction.road_stop_on_town_road"),
 
	PatchEntry("station.adjacent_stations"),
 
	PatchEntry("station.distant_join_stations"),
 
	PatchEntry("economy.station_noise_level"),
 
};
 
/** Stations sub-page */
 
static PatchPage _patches_stations_page = {_patches_stations, lengthof(_patches_stations)};
 

	
 
static PatchEntry _patches_economy[] = {
 
	PatchEntry("economy.inflation"),
 
	PatchEntry("construction.raw_industry_construction"),
 
	PatchEntry("economy.multiple_industry_per_town"),
 
	PatchEntry("economy.same_industry_close"),
 
static PatchEntry _patches_economy_towns[] = {
 
	PatchEntry("economy.bribe"),
 
	PatchEntry("economy.exclusive_rights"),
 
	PatchEntry("economy.give_money"),
 
	PatchEntry("gui.colored_news_year"),
 
	PatchEntry("economy.smooth_economy"),
 
	PatchEntry("economy.allow_shares"),
 
	PatchEntry("economy.town_layout"),
 
	PatchEntry("economy.mod_road_rebuild"),
 
	PatchEntry("economy.town_growth_rate"),
 
	PatchEntry("economy.larger_towns"),
 
	PatchEntry("economy.initial_city_size"),
 
};
 
/** Towns sub-page */
 
static PatchPage _patches_economy_towns_page = {_patches_economy_towns, lengthof(_patches_economy_towns)};
 

	
 
static PatchEntry _patches_economy_industries[] = {
 
	PatchEntry("construction.raw_industry_construction"),
 
	PatchEntry("economy.multiple_industry_per_town"),
 
	PatchEntry("economy.same_industry_close"),
 
};
 
/** Industries sub-page */
 
static PatchPage _patches_economy_industries_page = {_patches_economy_industries, lengthof(_patches_economy_industries)};
 

	
 
static PatchEntry _patches_economy[] = {
 
	PatchEntry(&_patches_economy_towns_page, STR_CONFIG_PATCHES_ECONOMY_TOWNS),
 
	PatchEntry(&_patches_economy_industries_page, STR_CONFIG_PATCHES_ECONOMY_INDUSTRIES),
 
	PatchEntry("economy.inflation"),
 
	PatchEntry("gui.colored_news_year"),
 
	PatchEntry("economy.smooth_economy"),
 
};
 
/** Economy sub-page */
 
static PatchPage _patches_economy_page = {_patches_economy, lengthof(_patches_economy)};
 

	
 
static PatchEntry _patches_ai[] = {
 
static PatchEntry _patches_ai_npc[] = {
 
	PatchEntry("ai.ainew_active"),
 
	PatchEntry("ai.ai_in_multiplayer"),
 
	PatchEntry("ai.ai_disable_veh_train"),
 
	PatchEntry("ai.ai_disable_veh_roadveh"),
 
	PatchEntry("ai.ai_disable_veh_aircraft"),
 
	PatchEntry("ai.ai_disable_veh_ship"),
 
};
 
/** Computer players sub-page */
 
static PatchPage _patches_ai_npc_page = {_patches_ai_npc, lengthof(_patches_ai_npc)};
 

	
 
static PatchEntry _patches_ai[] = {
 
	PatchEntry(&_patches_ai_npc_page, STR_CONFIG_PATCHES_AI_NPC),
 
	PatchEntry("economy.give_money"),
 
	PatchEntry("economy.allow_shares"),
 
};
 
/** AI sub-page */
 
static PatchPage _patches_ai_page = {_patches_ai, lengthof(_patches_ai)};
 

	
 
static PatchEntry _patches_vehicles[] = {
 
	PatchEntry("vehicle.realistic_acceleration"),
 
	PatchEntry("pf.forbid_90_deg"),
 
	PatchEntry("vehicle.mammoth_trains"),
 
	PatchEntry("order.gotodepot"),
 
	PatchEntry("pf.roadveh_queue"),
 
static PatchEntry _patches_vehicles_routing[] = {
 
	PatchEntry("pf.pathfinder_for_trains"),
 
	PatchEntry("pf.forbid_90_deg"),
 
	PatchEntry("pf.pathfinder_for_roadvehs"),
 
	PatchEntry("pf.roadveh_queue"),
 
	PatchEntry("pf.pathfinder_for_ships"),
 
	PatchEntry("gui.vehicle_income_warn"),
 
	PatchEntry("gui.order_review_system"),
 
	PatchEntry("vehicle.never_expire_vehicles"),
 
	PatchEntry("gui.lost_train_warn"),
 
};
 
/** Autorenew sub-page */
 
static PatchPage _patches_vehicles_routing_page = {_patches_vehicles_routing, lengthof(_patches_vehicles_routing)};
 

	
 
static PatchEntry _patches_vehicles_autorenew[] = {
 
	PatchEntry("gui.autorenew"),
 
	PatchEntry("gui.autorenew_months"),
 
	PatchEntry("gui.autorenew_money"),
 
	PatchEntry("vehicle.max_trains"),
 
	PatchEntry("vehicle.max_roadveh"),
 
	PatchEntry("vehicle.max_aircraft"),
 
	PatchEntry("vehicle.max_ships"),
 
};
 
/** Autorenew sub-page */
 
static PatchPage _patches_vehicles_autorenew_page = {_patches_vehicles_autorenew, lengthof(_patches_vehicles_autorenew)};
 

	
 
static PatchEntry _patches_vehicles_servicing[] = {
 
	PatchEntry("vehicle.servint_ispercent"),
 
	PatchEntry("vehicle.servint_trains"),
 
	PatchEntry("vehicle.servint_roadveh"),
 
	PatchEntry("vehicle.servint_ships"),
 
	PatchEntry("vehicle.servint_aircraft"),
 
	PatchEntry("order.no_servicing_if_no_breakdowns"),
 
};
 
/** Servicing sub-page */
 
static PatchPage _patches_vehicles_servicing_page = {_patches_vehicles_servicing, lengthof(_patches_vehicles_servicing)};
 

	
 
static PatchEntry _patches_vehicles_trains[] = {
 
	PatchEntry("vehicle.realistic_acceleration"),
 
	PatchEntry("vehicle.mammoth_trains"),
 
	PatchEntry("gui.vehicle_income_warn"),
 
	PatchEntry("gui.lost_train_warn"),
 
	PatchEntry("vehicle.wagon_speed_limits"),
 
	PatchEntry("vehicle.disable_elrails"),
 
	PatchEntry("vehicle.freight_trains"),
 
};
 
/** Trains sub-page */
 
static PatchPage _patches_vehicles_trains_page = {_patches_vehicles_trains, lengthof(_patches_vehicles_trains)};
 

	
 
static PatchEntry _patches_vehicles[] = {
 
	PatchEntry(&_patches_vehicles_routing_page, STR_CONFIG_PATCHES_VEHICLES_ROUTING),
 
	PatchEntry(&_patches_vehicles_autorenew_page, STR_CONFIG_PATCHES_VEHICLES_AUTORENEW),
 
	PatchEntry(&_patches_vehicles_servicing_page, STR_CONFIG_PATCHES_VEHICLES_SERVICING),
 
	PatchEntry(&_patches_vehicles_trains_page, STR_CONFIG_PATCHES_VEHICLES_TRAINS),
 
	PatchEntry("order.gotodepot"),
 
	PatchEntry("gui.order_review_system"),
 
	PatchEntry("vehicle.never_expire_vehicles"),
 
	PatchEntry("vehicle.max_trains"),
 
	PatchEntry("vehicle.max_roadveh"),
 
	PatchEntry("vehicle.max_aircraft"),
 
	PatchEntry("vehicle.max_ships"),
 
	PatchEntry("vehicle.plane_speed"),
 
	PatchEntry("order.timetabling"),
 
	PatchEntry("vehicle.dynamic_engines"),
 
};
 
/** Vehicles sub-page */
 
static PatchPage _patches_vehicles_page = {_patches_vehicles, lengthof(_patches_vehicles)};
 

	
 
static PatchEntry _patches_main[] = {
 
	PatchEntry(&_patches_ui_page,           STR_CONFIG_PATCHES_GUI),
 
	PatchEntry(&_patches_construction_page, STR_CONFIG_PATCHES_CONSTRUCTION),
 
	PatchEntry(&_patches_vehicles_page,     STR_CONFIG_PATCHES_VEHICLES),
 
	PatchEntry(&_patches_stations_page,     STR_CONFIG_PATCHES_STATIONS),
 
	PatchEntry(&_patches_economy_page,      STR_CONFIG_PATCHES_ECONOMY),
 
	PatchEntry(&_patches_ai_page,           STR_CONFIG_PATCHES_AI),
 
};
 

	
 
/** Main page, holding all advanced settings */
 
static PatchPage _patches_main_page = {_patches_main, lengthof(_patches_main)};
 

	
 
/** Widget numbers of config patches window */
 
enum PatchesSelectionWidgets {
 
	PATCHSEL_OPTIONSPANEL = 2, ///< Panel widget containing the option lists
 
	PATCHSEL_SCROLLBAR,        ///< Scrollbar
 
	PATCHSEL_RESIZE,           ///< Resize button
 
};
 

	
 
struct PatchesSelectionWindow : Window {
 
	static const int SETTINGTREE_LEFT_OFFSET; ///< Position of left edge of patch values
 
	static const int SETTINGTREE_TOP_OFFSET;  ///< Position of top edge of patch values
 

	
 
	static GameSettings *patches_ptr;  ///< Pointer to the game settings being displayed and modified
 

	
 
	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)
 

	
 
	PatchesSelectionWindow(const WindowDesc *desc) : Window(desc)
 
	{
 
		/* Check that the widget doesn't get moved without adapting the constant as well.
 
		 *  - SETTINGTREE_LEFT_OFFSET should be 5 pixels to the right of the left edge of the panel
 
		 *  - SETTINGTREE_TOP_OFFSET should be 5 pixels below the top edge of the panel
 
		 */
 
		assert(this->widget[PATCHSEL_OPTIONSPANEL].left + 5 == SETTINGTREE_LEFT_OFFSET);
 
		assert(this->widget[PATCHSEL_OPTIONSPANEL].top + 5 == SETTINGTREE_TOP_OFFSET);
 

	
 
		static bool first_time = true;
 

	
 
		patches_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
 

	
0 comments (0 inline, 0 general)