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