1 #ifndef dataobj_settings_h
2 #define dataobj_settings_h
3 
4 #include <string>
5 #include "../simtypes.h"
6 #include "../simconst.h"
7 
8 
9 /**
10  * Game settings
11  *
12  * Hj. Malthaner
13  *
14  * April 2000
15  */
16 
17 class player_t;
18 class loadsave_t;
19 class tabfile_t;
20 class way_desc_t;
21 
22 struct road_timeline_t
23 {
24 	char name[64];
25 	uint16 intro;
26 	uint16 retire;
27 };
28 
29 
30 class settings_t
31 {
32 	// these are the only classes, that are allowed to modify elements from settings_t
33 	// for all remaining special cases there are the set_...() routines
34 	friend class settings_general_stats_t;
35 	friend class settings_routing_stats_t;
36 	friend class settings_economy_stats_t;
37 	friend class settings_costs_stats_t;
38 	friend class settings_climates_stats_t;
39 	friend class climate_gui_t;
40 	friend class welt_gui_t;
41 
42 private:
43 	sint32 size_x, size_y;
44 	sint32 map_number;
45 
46 	/* new setting since version 0.85.01
47 	 * @author prissi
48 	 */
49 	sint32 factory_count;
50 	sint32 electric_promille;
51 	sint32 tourist_attractions;
52 
53 	sint32 city_count;
54 	sint32 mean_citizen_count;
55 
56 	// town growth factors
57 	sint32 passenger_multiplier;
58 	sint32 mail_multiplier;
59 	sint32 goods_multiplier;
60 	sint32 electricity_multiplier;
61 
62 	// Also there are size dependent factors (0=no growth)
63 	sint32 growthfactor_small;
64 	sint32 growthfactor_medium;
65 	sint32 growthfactor_large;
66 
67 	sint16 special_building_distance;	// distance between attraction to factory or other special buildings
68 	uint32 minimum_city_distance;
69 	uint32 industry_increase;
70 
71 	// percentage of routing
72 	sint16 factory_worker_percentage;
73 	sint16 tourist_percentage;
74 
75 	// higher number: passengers are more evenly distributed around the map
76 	struct yearly_locality_factor_t
77 	{
78 		sint16	year;
79 		uint32	factor;
80 	};
81 	yearly_locality_factor_t locality_factor_per_year[10];
82 
83 	// radius for factories
84 	sint16 factory_worker_radius;
85 	sint32 factory_worker_minimum_towns;
86 	sint32 factory_worker_maximum_towns;
87 
88 	// Knightly : number of periods for averaging the amount of arrived pax/mail at factories
89 	uint16 factory_arrival_periods;
90 
91 	// Knightly : whether factory pax/mail demands are enforced
92 	bool factory_enforce_demand;
93 
94 	uint16 station_coverage_size;
95 
96 	// the maximum length of each convoi
97 	uint8 max_rail_convoi_length;
98 	uint8 max_road_convoi_length;
99 	uint8 max_ship_convoi_length;
100 	uint8 max_air_convoi_length;
101 
102 	/**
103 	 * At which level buildings generate traffic?
104 	 */
105 	sint32 traffic_level;
106 
107 	/**
108 	 * Should pedestrians be displayed?
109 	 */
110 	sint32 show_pax;
111 
112 	/**
113 	 * the maximum and minimum allowed world height.
114 	 */
115 	sint8 world_maximum_height;
116 	sint8 world_minimum_height;
117 
118 	 /**
119 	 * waterlevel, climate borders, lowest snow in winter
120 	 */
121 
122 	sint16 groundwater;
123 	sint16 climate_borders[MAX_CLIMATES];
124 	sint16 winter_snowline;
125 
126 	double max_mountain_height;                  //01-Dec-01        Markus Weber    Added
127 	double map_roughness;                        //01-Dec-01        Markus Weber    Added
128 
129 	// river stuff
130 	sint16 river_number;
131 	sint16 min_river_length;
132 	sint16 max_river_length;
133 
134 	// forest stuff
135 	uint8 forest_base_size;
136 	uint8 forest_map_size_divisor;
137 	uint8 forest_count_divisor;
138 	uint16 forest_inverse_spare_tree_density;
139 	uint8 max_no_of_trees_on_square;
140 	uint16 tree_climates;
141 	uint16 no_tree_climates;
142 	bool no_trees;
143 
144 	bool lake;
145 
146 	// game mechanics
147 	uint8 allow_player_change;
148 	uint8 use_timeline;
149 	sint16 starting_year;
150 	sint16 starting_month;
151 	sint16 bits_per_month;
152 
153 	std::string filename;
154 
155 	bool beginner_mode;
156 	sint32 beginner_price_factor;
157 
158 	/* Industry supply model used.
159 	 * 0 : Classic (no flow control?)
160 	 * 1 : JIT Classic (maximum transit and storage limited)
161 	 * 2 : JIT Version 2 (demand buffers with better consumption model)
162 	 */
163 	uint8 just_in_time;
164 
165 	// default 0, will be incremented after each 90 degree rotation until 4
166 	uint8 rotation;
167 
168 	sint16 origin_x, origin_y;
169 
170 	sint32 passenger_factor;
171 
172 	sint16 min_factory_spacing;
173 	sint16 max_factory_spacing;
174 	sint16 max_factory_spacing_percentage;
175 
176 	/*no goods will put in route, when stored>gemax_storage and goods_in_transit*maximum_intransit_percentage/100>max_storage  */
177 	uint16 factory_maximum_intransit_percentage;
178 
179 	/* prissi: crossconnect all factories (like OTTD and similar games) */
180 	bool crossconnect_factories;
181 
182 	/* prissi: crossconnect all factories (like OTTD and similar games) */
183 	sint16 crossconnect_factor;
184 
185 	/**
186 	* Generate random pedestrians in the cities?
187 	*
188 	* @author Hj. Malthaner
189 	*/
190 	bool random_pedestrians;
191 
192 	sint32 stadtauto_duration;
193 
194 	bool freeplay;
195 
196 	sint64 starting_money;
197 
198 	struct yearmoney
199 	{
200 		sint16 year;
201 		sint64 money;
202 		bool interpol;
203 	};
204 	yearmoney startingmoneyperyear[10];
205 
206 	uint16 num_city_roads;
207 	road_timeline_t city_roads[10];
208 	uint16 num_intercity_roads;
209 	road_timeline_t intercity_roads[10];
210 
211 	/**
212 	 * Use numbering for stations?
213 	 *
214 	 * @author Hj. Malthaner
215 	 */
216 	bool numbered_stations;
217 
218 	/* prissi: maximum number of steps for breath search */
219 	sint32 max_route_steps;
220 
221 	// maximum length for route search at signs/signals
222 	sint32 max_choose_route_steps;
223 
224 	// max steps for good routing
225 	sint32 max_hops;
226 
227 	/* prissi: maximum number of steps for breath search */
228 	sint32 max_transfers;
229 
230 	/* multiplier for steps on diagonal:
231 	 * 1024: TT-like, factor 2, vehicle will be too long and too fast
232 	 * 724: correct one, factor sqrt(2)
233 	 */
234 	uint16 pak_diagonal_multiplier;
235 
236 	// names of the stations ...
237 	char language_code_names[4];
238 
239 	// true, if the different capacities (passengers/mail/freight) are counted separately
240 	bool separate_halt_capacities;
241 
242 	/**
243 	 * payment is only for the distance that got shorter between target and start
244 	 * three modes:
245 	 * 0 = pay for travelled manhattan distance
246 	 * 1 = pay for distance difference to next transfer stop
247 	 * 2 = pay for distance to destination
248 	 * 0 allows chaeting, but the income with 1 or two are much lower
249 	 */
250 	uint8 pay_for_total_distance;
251 
252 	/* if set, goods will avoid being routed over overcrowded stops */
253 	bool avoid_overcrowding;
254 
255 	/* if set, goods will not routed over overcrowded stations but rather try detours (if possible) */
256 	bool no_routing_over_overcrowding;
257 
258 	// lowest possible income with speedbonus (1000=1) default 125
259 	sint32 bonus_basefactor;
260 
261 	// true, if this pak should be used with extensions (default)
262 	bool with_private_paks;
263 
264 	/// what is the minimum clearance required under bridges
265 	sint8 way_height_clearance;
266 
267 	// if true, you can buy obsolete stuff
268 	bool allow_buying_obsolete_vehicles;
269 	// vehicle value is decrease by this factor/1000 when a vehicle leaved the depot
270 	sint16 used_vehicle_reduction;
271 
272 	uint32 random_counter;
273 	uint32 frames_per_second;	// only used in network mode ...
274 	uint32 frames_per_step;
275 	uint32 server_frames_ahead;
276 
277 	bool drive_on_left;
278 	bool signals_on_left;
279 
280 	// fraction of running costs charged for going on other players way
281 	sint32 way_toll_runningcost_percentage;
282 	sint32 way_toll_waycost_percentage;
283 
284 	// true if transformers are allowed to built underground
285 	bool allow_underground_transformers;
286 
287 	// true if companies can make ways public
288 	bool disable_make_way_public;
289 
290 public:
291 	/* the big cost section */
292 	sint32 maint_building;	// normal building
293 
294 	sint64 cst_multiply_dock;
295 	sint64 cst_multiply_station;
296 	sint64 cst_multiply_roadstop;
297 	sint64 cst_multiply_airterminal;
298 	sint64 cst_multiply_post;
299 	sint64 cst_multiply_headquarter;
300 	sint64 cst_depot_rail;
301 	sint64 cst_depot_road;
302 	sint64 cst_depot_ship;
303 	sint64 cst_depot_air;
304 
305 	// cost to merge station
306 	uint32 allow_merge_distant_halt;
307 	sint64 cst_multiply_merge_halt;
308 
309 	// alter landscape
310 	sint64 cst_buy_land;
311 	sint64 cst_alter_land;
312 	sint64 cst_alter_climate;
313 	sint64 cst_set_slope;
314 	sint64 cst_found_city;
315 	sint64 cst_multiply_found_industry;
316 	sint64 cst_remove_tree;
317 	sint64 cst_multiply_remove_haus;
318 	sint64 cst_multiply_remove_field;
319 	sint64 cst_transformer;
320 	sint64 cst_maintain_transformer;
321 
322 	// maintainance cost in months to make something public
323 	sint64 cst_make_public_months;
324 
325 	// costs for the way searcher
326 	sint32 way_count_straight;
327 	sint32 way_count_curve;
328 	sint32 way_count_double_curve;
329 	sint32 way_count_90_curve;
330 	sint32 way_count_slope;
331 	sint32 way_count_tunnel;
332 	uint32 way_max_bridge_len;
333 	sint32 way_count_leaving_road;
334 
335 	// true if active
336 	bool player_active[MAX_PLAYER_COUNT];
337 	// 0 = empty, otherwise some value from simplay
338 	uint8 player_type[MAX_PLAYER_COUNT];
339 
340 	// how fast new AI will built something
341 	uint32 default_ai_construction_speed;
342 
343 	// player color suggestions for new games
344 	bool default_player_color_random;
345 	uint8 default_player_color[MAX_PLAYER_COUNT][2];
346 
347 	// remove dummy companies and remove password from abandoned companies
348 	uint16 remove_dummy_player_months;
349 	uint16 unprotect_abandoned_player_months;
350 
351 public:
352 	/**
353 	 * If map is read from a heightfield, this is the name of the heightfield.
354 	 * Set to empty string in order to avoid loading.
355 	 * @author Hj. Malthaner
356 	 */
357 	std::string heightfield;
358 
359 	settings_t();
360 
361 	void rdwr(loadsave_t *file);
362 
363 	void copy_city_road(settings_t const& other);
364 
365 	// init from this file ...
366 	void parse_simuconf( tabfile_t &simuconf, sint16 &disp_width, sint16 &disp_height, sint16 &fullscreen, std::string &objfilename );
367 
368 	void parse_colours(tabfile_t& simuconf);
369 
set_size_x(sint32 g)370 	void set_size_x(sint32 g) {size_x=g;}
set_size_y(sint32 g)371 	void set_size_y(sint32 g) {size_y=g;}
set_size(sint32 x,sint32 y)372 	void set_size(sint32 x, sint32 y) {size_x = x; size_y=y;}
get_size_x()373 	sint32 get_size_x() const {return size_x;}
get_size_y()374 	sint32 get_size_y() const {return size_y;}
375 
get_map_number()376 	sint32 get_map_number() const {return map_number;}
377 
set_factory_count(sint32 d)378 	void set_factory_count(sint32 d) { factory_count=d; }
get_factory_count()379 	sint32 get_factory_count() const {return factory_count;}
380 
get_electric_promille()381 	sint32 get_electric_promille() const {return electric_promille;}
382 
set_tourist_attractions(sint32 n)383 	void set_tourist_attractions( sint32 n ) { tourist_attractions = n; }
get_tourist_attractions()384 	sint32 get_tourist_attractions() const {return tourist_attractions;}
385 
set_city_count(sint32 n)386 	void set_city_count(sint32 n) {city_count=n;}
get_city_count()387 	sint32 get_city_count() const {return city_count;}
388 
set_mean_citizen_count(sint32 n)389 	void set_mean_citizen_count( sint32 n ) {mean_citizen_count = n;}
get_mean_citizen_count()390 	sint32 get_mean_citizen_count() const {return mean_citizen_count;}
391 
set_traffic_level(sint32 l)392 	void set_traffic_level(sint32 l) {traffic_level=l;}
get_traffic_level()393 	sint32 get_traffic_level() const {return traffic_level;}
394 
set_show_pax(bool yesno)395 	void set_show_pax(bool yesno) {show_pax=yesno;}
get_show_pax()396 	bool get_show_pax() const {return show_pax != 0;}
397 
get_maximumheight()398 	sint8 get_maximumheight() const { return world_maximum_height; }
get_minimumheight()399 	sint8 get_minimumheight() const { return world_minimum_height; }
400 
get_groundwater()401 	sint16 get_groundwater() const {return groundwater;}
402 
get_max_mountain_height()403 	double get_max_mountain_height() const {return max_mountain_height;}
404 
get_map_roughness()405 	double get_map_roughness() const {return map_roughness;}
406 
get_station_coverage()407 	uint16 get_station_coverage() const {return station_coverage_size;}
408 
get_max_rail_convoi_length()409 	uint8 get_max_rail_convoi_length() const {return max_rail_convoi_length;}
get_max_road_convoi_length()410 	uint8 get_max_road_convoi_length() const {return max_road_convoi_length;}
get_max_ship_convoi_length()411 	uint8 get_max_ship_convoi_length() const {return max_ship_convoi_length;}
get_max_air_convoi_length()412 	uint8 get_max_air_convoi_length() const {return max_air_convoi_length;}
413 
set_allow_player_change(char n)414 	void set_allow_player_change(char n) {allow_player_change=n;}	// prissi, Oct-2005
get_allow_player_change()415 	uint8 get_allow_player_change() const {return allow_player_change;}
416 
set_use_timeline(char n)417 	void set_use_timeline(char n) {use_timeline=n;}	// prissi, Oct-2005
get_use_timeline()418 	uint8 get_use_timeline() const {return use_timeline;}
419 
set_starting_year(sint16 n)420 	void set_starting_year( sint16 n ) { starting_year = n; }
get_starting_year()421 	sint16 get_starting_year() const {return starting_year;}
422 
set_starting_month(sint16 n)423 	void set_starting_month( sint16 n ) { starting_month = n; }
get_starting_month()424 	sint16 get_starting_month() const {return starting_month;}
425 
get_bits_per_month()426 	sint16 get_bits_per_month() const {return bits_per_month;}
427 
set_filename(const char * n)428 	void set_filename(const char *n) {filename=n;}	// prissi, Jun-06
get_filename()429 	const char* get_filename() const { return filename.c_str(); }
430 
get_beginner_mode()431 	bool get_beginner_mode() const {return beginner_mode;}
432 
set_just_in_time(uint8 b)433 	void set_just_in_time(uint8 b) { just_in_time = b; }
get_just_in_time()434 	uint8 get_just_in_time() const {return just_in_time;}
435 
436 	void set_default_climates();
get_climate_borders()437 	const sint16 *get_climate_borders() const { return climate_borders; }
438 
get_winter_snowline()439 	sint16 get_winter_snowline() const {return winter_snowline;}
440 
rotate90()441 	void rotate90() {
442 		rotation = (rotation+1)&3;
443 		set_size( size_y, size_x );
444 	}
get_rotation()445 	uint8 get_rotation() const { return rotation; }
446 
set_origin_x(sint16 x)447 	void set_origin_x(sint16 x) { origin_x = x; }
set_origin_y(sint16 y)448 	void set_origin_y(sint16 y) { origin_y = y; }
get_origin_x()449 	sint16 get_origin_x() const { return origin_x; }
get_origin_y()450 	sint16 get_origin_y() const { return origin_y; }
451 
is_freeplay()452 	bool is_freeplay() const { return freeplay; }
set_freeplay(bool f)453 	void set_freeplay( bool f ) { freeplay = f; }
454 
get_max_route_steps()455 	sint32 get_max_route_steps() const { return max_route_steps; }
get_max_choose_route_steps()456 	sint32 get_max_choose_route_steps() const { return max_choose_route_steps; }
get_max_hops()457 	sint32 get_max_hops() const { return max_hops; }
get_max_transfers()458 	sint32 get_max_transfers() const { return max_transfers; }
459 
460 	sint64 get_starting_money(sint16 year) const;
461 
get_random_pedestrians()462 	bool get_random_pedestrians() const { return random_pedestrians; }
set_random_pedestrians(bool f)463 	void set_random_pedestrians( bool f ) { random_pedestrians = f; }
464 
get_special_building_distance()465 	sint16 get_special_building_distance() const { return special_building_distance; }
466 
get_min_factory_spacing()467 	sint16 get_min_factory_spacing() const { return min_factory_spacing; }
get_max_factory_spacing()468 	sint16 get_max_factory_spacing() const { return max_factory_spacing; }
get_max_factory_spacing_percent()469 	sint16 get_max_factory_spacing_percent() const { return max_factory_spacing_percentage; }
get_crossconnect_factor()470 	sint16 get_crossconnect_factor() const { return crossconnect_factor; }
is_crossconnect_factories()471 	bool is_crossconnect_factories() const { return crossconnect_factories; }
472 
get_numbered_stations()473 	bool get_numbered_stations() const { return numbered_stations; }
474 
get_stadtauto_duration()475 	sint32 get_stadtauto_duration() const { return stadtauto_duration; }
476 
get_beginner_price_factor()477 	sint32 get_beginner_price_factor() const { return beginner_price_factor; }
478 
479 	const way_desc_t *get_city_road_type( uint16 year );
480 	const way_desc_t *get_intercity_road_type( uint16 year );
481 
set_pak_diagonal_multiplier(uint16 n)482 	void set_pak_diagonal_multiplier(uint16 n) { pak_diagonal_multiplier = n; }
get_pak_diagonal_multiplier()483 	uint16 get_pak_diagonal_multiplier() const { return pak_diagonal_multiplier; }
484 
485 	int get_name_language_id() const;
set_name_language_iso(const char * iso)486 	void set_name_language_iso( const char *iso ) {
487 		language_code_names[0] = iso[0];
488 		language_code_names[1] = iso[1];
489 		language_code_names[2] = 0;
490 	}
491 
set_player_active(uint8 i,bool b)492 	void set_player_active(uint8 i, bool b) { player_active[i] = b; }
set_player_type(uint8 i,uint8 t)493 	void set_player_type(uint8 i, uint8 t) { player_type[i] = t; }
get_player_type(uint8 i)494 	uint8 get_player_type(uint8 i) const { return player_type[i]; }
495 
is_separate_halt_capacities()496 	bool is_separate_halt_capacities() const { return separate_halt_capacities ; }
497 
498 	// allowed modes are 0,1,2
499 	enum { TO_PREVIOUS=0, TO_TRANSFER, TO_DESTINATION };
get_pay_for_total_distance_mode()500 	uint8 get_pay_for_total_distance_mode() const { return pay_for_total_distance ; }
501 
502 	// do not take people to overcrowded destinations
is_avoid_overcrowding()503 	bool is_avoid_overcrowding() const { return avoid_overcrowding; }
504 
505 	// do not allow routes over overcrowded destinations
is_no_routing_over_overcrowding()506 	bool is_no_routing_over_overcrowding() const { return no_routing_over_overcrowding; }
507 
get_river_number()508 	sint16 get_river_number() const { return river_number; }
get_min_river_length()509 	sint16 get_min_river_length() const { return min_river_length; }
get_max_river_length()510 	sint16 get_max_river_length() const { return max_river_length; }
511 
512 	// true, if this pak should be used with extensions (default)
set_with_private_paks(bool b)513 	void set_with_private_paks(bool b ) {with_private_paks = b;}
get_with_private_paks()514 	bool get_with_private_paks() const { return with_private_paks; }
515 
get_passenger_factor()516 	sint32 get_passenger_factor() const { return passenger_factor; }
517 
518 	// town growth stuff
get_passenger_multiplier()519 	sint32 get_passenger_multiplier() const { return passenger_multiplier; }
get_mail_multiplier()520 	sint32 get_mail_multiplier() const { return mail_multiplier; }
get_goods_multiplier()521 	sint32 get_goods_multiplier() const { return goods_multiplier; }
get_electricity_multiplier()522 	sint32 get_electricity_multiplier() const { return electricity_multiplier; }
523 
524 	// Also there are size dependent factors (0=no growth)
get_growthfactor_small()525 	sint32 get_growthfactor_small() const { return growthfactor_small; }
get_growthfactor_medium()526 	sint32 get_growthfactor_medium() const { return growthfactor_medium; }
get_growthfactor_large()527 	sint32 get_growthfactor_large() const { return growthfactor_large; }
528 
529 	// percentage of passengers for different kinds of trips
get_factory_worker_percentage()530 	sint16 get_factory_worker_percentage() const { return factory_worker_percentage; }
get_tourist_percentage()531 	sint16 get_tourist_percentage() const { return tourist_percentage; }
532 
533 	// radius from factories to get workers from towns (usually set to 77 but 1/8 of map size may be meaningful too)
get_factory_worker_radius()534 	uint16 get_factory_worker_radius() const { return factory_worker_radius; }
535 
536 	// any factory will be connected to at least this number of next cities
get_factory_worker_minimum_towns()537 	uint32 get_factory_worker_minimum_towns() const { return factory_worker_minimum_towns; }
set_factory_worker_minimum_towns(uint32 n)538 	void set_factory_worker_minimum_towns(uint32 n) { factory_worker_minimum_towns = n; }
539 
540 	// any factory will be connected to not more than this number of next cities
get_factory_worker_maximum_towns()541 	uint32 get_factory_worker_maximum_towns() const { return factory_worker_maximum_towns; }
set_factory_worker_maximum_towns(uint32 n)542 	void set_factory_worker_maximum_towns(uint32 n) { factory_worker_maximum_towns = n; }
543 
544 	// Knightly : number of periods for averaging the amount of arrived pax/mail at factories
get_factory_arrival_periods()545 	uint16 get_factory_arrival_periods() const { return factory_arrival_periods; }
546 
547 	// Knightly : whether factory pax/mail demands are enforced
get_factory_enforce_demand()548 	bool get_factory_enforce_demand() const { return factory_enforce_demand; }
549 
get_factory_maximum_intransit_percentage()550 	uint16 get_factory_maximum_intransit_percentage() const { return factory_maximum_intransit_percentage; }
551 
552 	uint32 get_locality_factor(sint16 year) const;
553 
554 	// disallow using obsolete vehicles in depot
get_allow_buying_obsolete_vehicles()555 	bool get_allow_buying_obsolete_vehicles() const { return allow_buying_obsolete_vehicles; }
556 
557 	// forest stuff
get_forest_base_size()558 	uint8 get_forest_base_size() const { return forest_base_size; }
get_forest_map_size_divisor()559 	uint8 get_forest_map_size_divisor() const { return forest_map_size_divisor; }
get_forest_count_divisor()560 	uint8 get_forest_count_divisor() const { return forest_count_divisor; }
get_forest_inverse_spare_tree_density()561 	uint16 get_forest_inverse_spare_tree_density() const { return forest_inverse_spare_tree_density; }
get_max_no_of_trees_on_square()562 	uint8 get_max_no_of_trees_on_square() const { return max_no_of_trees_on_square; }
get_tree_climates()563 	uint16 get_tree_climates() const { return tree_climates; }
get_no_tree_climates()564 	uint16 get_no_tree_climates() const { return no_tree_climates; }
get_no_trees()565 	bool get_no_trees() const { return no_trees; }
set_no_trees(bool b)566 	void set_no_trees(bool b) { no_trees = b; }
567 
get_lake()568 	bool get_lake() const { return lake; }
set_lake(bool b)569 	void set_lake(bool b) { lake = b; }
570 
get_industry_increase_every()571 	uint32 get_industry_increase_every() const { return industry_increase; }
set_industry_increase_every(uint32 n)572 	void set_industry_increase_every( uint32 n ) { industry_increase = n; }
get_minimum_city_distance()573 	uint32 get_minimum_city_distance() const { return minimum_city_distance; }
574 
get_used_vehicle_reduction()575 	sint16 get_used_vehicle_reduction() const { return used_vehicle_reduction; }
576 
577 	void set_player_color_to_default( player_t *player ) const;
578 	void set_default_player_color(uint8 player_nr, uint8 color1, uint8 color2);
579 
580 	// usually only used in network mode => no need to set them!
get_random_counter()581 	uint32 get_random_counter() const { return random_counter; }
get_frames_per_second()582 	uint32 get_frames_per_second() const { return frames_per_second; }
get_frames_per_step()583 	uint32 get_frames_per_step() const { return frames_per_step; }
get_server_frames_ahead()584 	uint32 get_server_frames_ahead() const { return server_frames_ahead; }
585 
is_drive_left()586 	bool is_drive_left() const { return drive_on_left; }
is_signals_left()587 	bool is_signals_left() const { return signals_on_left; }
588 
get_way_toll_runningcost_percentage()589 	sint32 get_way_toll_runningcost_percentage() const { return way_toll_runningcost_percentage; }
get_way_toll_waycost_percentage()590 	sint32 get_way_toll_waycost_percentage() const { return way_toll_waycost_percentage; }
591 
get_bonus_basefactor()592 	sint32 get_bonus_basefactor() const { return bonus_basefactor; }
593 
get_allow_underground_transformers()594 	bool get_allow_underground_transformers() const { return allow_underground_transformers; }
get_disable_make_way_public()595 	bool get_disable_make_way_public() const { return disable_make_way_public; }
596 
get_allow_merge_distant_halt()597 	uint32 get_allow_merge_distant_halt() const { return allow_merge_distant_halt; }
598 
get_remove_dummy_player_months()599 	uint16 get_remove_dummy_player_months() const { return remove_dummy_player_months; }
get_unprotect_abandoned_player_months()600 	uint16 get_unprotect_abandoned_player_months() const { return unprotect_abandoned_player_months; }
601 
get_way_height_clearance()602 	sint8 get_way_height_clearance() const { return way_height_clearance; }
set_way_height_clearance(sint8 n)603 	void set_way_height_clearance( sint8 n ) { way_height_clearance = n; }
604 
get_default_ai_construction_speed()605 	uint32 get_default_ai_construction_speed() const { return default_ai_construction_speed; }
set_default_ai_construction_speed(uint32 n)606 	void set_default_ai_construction_speed( uint32 n ) { default_ai_construction_speed = n; }
607 };
608 
609 #endif
610