1; This file is part of OpenTTD. 2; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. 3; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 4; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. 5; 6 7; Pathfinding settings as stored in the main configuration file ("openttd.cfg") 8; and in the savegame PATS chunk. 9 10[pre-amble] 11static void InvalidateShipPathCache(int32 new_value); 12 13static const SettingVariant _pathfinding_settings_table[] = { 14[post-amble] 15}; 16[templates] 17SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), 18SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), 19 20[validation] 21SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); 22 23[defaults] 24flags = SF_NONE 25interval = 0 26str = STR_NULL 27strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT 28strval = STR_NULL 29pre_cb = nullptr 30post_cb = nullptr 31load = nullptr 32from = SL_MIN_VERSION 33to = SL_MAX_VERSION 34cat = SC_ADVANCED 35extra = 0 36startup = false 37 38 39[SDT_BOOL] 40var = pf.forbid_90_deg 41def = false 42str = STR_CONFIG_SETTING_FORBID_90_DEG 43strhelp = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT 44post_cb = InvalidateShipPathCache 45cat = SC_EXPERT 46 47[SDT_BOOL] 48var = pf.roadveh_queue 49def = true 50cat = SC_EXPERT 51 52[SDT_BOOL] 53var = pf.new_pathfinding_all 54to = SLV_87 55def = false 56cat = SC_EXPERT 57 58[SDT_BOOL] 59var = pf.yapf.ship_use_yapf 60from = SLV_28 61to = SLV_87 62def = false 63cat = SC_EXPERT 64 65[SDT_BOOL] 66var = pf.yapf.road_use_yapf 67from = SLV_28 68to = SLV_87 69def = true 70cat = SC_EXPERT 71 72[SDT_BOOL] 73var = pf.yapf.rail_use_yapf 74from = SLV_28 75to = SLV_87 76def = true 77cat = SC_EXPERT 78 79[SDT_VAR] 80var = pf.pathfinder_for_trains 81type = SLE_UINT8 82from = SLV_87 83flags = SF_GUI_DROPDOWN 84def = 2 85min = 1 86max = 2 87interval = 1 88str = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS 89strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT 90strval = STR_CONFIG_SETTING_PATHFINDER_NPF 91cat = SC_EXPERT 92 93[SDT_VAR] 94var = pf.pathfinder_for_roadvehs 95type = SLE_UINT8 96from = SLV_87 97flags = SF_GUI_DROPDOWN 98def = 2 99min = 1 100max = 2 101interval = 1 102str = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES 103strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT 104strval = STR_CONFIG_SETTING_PATHFINDER_NPF 105cat = SC_EXPERT 106 107[SDT_VAR] 108var = pf.pathfinder_for_ships 109type = SLE_UINT8 110from = SLV_87 111flags = SF_GUI_DROPDOWN 112def = 2 113min = 1 114max = 2 115interval = 1 116str = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS 117strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT 118strval = STR_CONFIG_SETTING_PATHFINDER_NPF 119post_cb = InvalidateShipPathCache 120cat = SC_EXPERT 121 122[SDT_BOOL] 123var = pf.reverse_at_signals 124from = SLV_159 125def = false 126str = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS 127strhelp = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT 128 129[SDT_VAR] 130var = pf.wait_oneway_signal 131type = SLE_UINT8 132def = 15 133min = 2 134max = 255 135cat = SC_EXPERT 136 137[SDT_VAR] 138var = pf.wait_twoway_signal 139type = SLE_UINT8 140def = 41 141min = 2 142max = 255 143cat = SC_EXPERT 144 145[SDT_VAR] 146var = pf.wait_for_pbs_path 147type = SLE_UINT8 148from = SLV_100 149def = 30 150min = 2 151max = 255 152cat = SC_EXPERT 153 154[SDT_BOOL] 155var = pf.reserve_paths 156from = SLV_100 157def = false 158cat = SC_EXPERT 159 160[SDT_VAR] 161var = pf.path_backoff_interval 162type = SLE_UINT8 163from = SLV_100 164def = 20 165min = 1 166max = 255 167cat = SC_EXPERT 168 169[SDT_VAR] 170var = pf.npf.npf_max_search_nodes 171type = SLE_UINT 172def = 10000 173min = 500 174max = 100000 175cat = SC_EXPERT 176 177[SDT_VAR] 178var = pf.npf.npf_rail_firstred_penalty 179type = SLE_UINT 180def = 10 * NPF_TILE_LENGTH 181min = 0 182max = 100000 183cat = SC_EXPERT 184 185[SDT_VAR] 186var = pf.npf.npf_rail_firstred_exit_penalty 187type = SLE_UINT 188def = 100 * NPF_TILE_LENGTH 189min = 0 190max = 100000 191cat = SC_EXPERT 192 193[SDT_VAR] 194var = pf.npf.npf_rail_lastred_penalty 195type = SLE_UINT 196def = 10 * NPF_TILE_LENGTH 197min = 0 198max = 100000 199cat = SC_EXPERT 200 201[SDT_VAR] 202var = pf.npf.npf_rail_station_penalty 203type = SLE_UINT 204def = 1 * NPF_TILE_LENGTH 205min = 0 206max = 100000 207cat = SC_EXPERT 208 209[SDT_VAR] 210var = pf.npf.npf_rail_slope_penalty 211type = SLE_UINT 212def = 1 * NPF_TILE_LENGTH 213min = 0 214max = 100000 215cat = SC_EXPERT 216 217[SDT_VAR] 218var = pf.npf.npf_rail_curve_penalty 219type = SLE_UINT 220def = 1 * NPF_TILE_LENGTH 221min = 0 222max = 100000 223cat = SC_EXPERT 224 225[SDT_VAR] 226var = pf.npf.npf_rail_depot_reverse_penalty 227type = SLE_UINT 228def = 50 * NPF_TILE_LENGTH 229min = 0 230max = 100000 231cat = SC_EXPERT 232 233[SDT_VAR] 234var = pf.npf.npf_rail_pbs_cross_penalty 235type = SLE_UINT 236from = SLV_100 237def = 3 * NPF_TILE_LENGTH 238min = 0 239max = 100000 240cat = SC_EXPERT 241 242[SDT_VAR] 243var = pf.npf.npf_rail_pbs_signal_back_penalty 244type = SLE_UINT 245from = SLV_100 246def = 15 * NPF_TILE_LENGTH 247min = 0 248max = 100000 249cat = SC_EXPERT 250 251[SDT_VAR] 252var = pf.npf.npf_buoy_penalty 253type = SLE_UINT 254def = 2 * NPF_TILE_LENGTH 255min = 0 256max = 100000 257cat = SC_EXPERT 258 259[SDT_VAR] 260var = pf.npf.npf_water_curve_penalty 261type = SLE_UINT 262def = 1 * NPF_TILE_LENGTH 263min = 0 264max = 100000 265cat = SC_EXPERT 266 267[SDT_VAR] 268var = pf.npf.npf_road_curve_penalty 269type = SLE_UINT 270def = 1 * NPF_TILE_LENGTH 271min = 0 272max = 100000 273cat = SC_EXPERT 274 275[SDT_VAR] 276var = pf.npf.npf_crossing_penalty 277type = SLE_UINT 278def = 3 * NPF_TILE_LENGTH 279min = 0 280max = 100000 281cat = SC_EXPERT 282 283[SDT_VAR] 284var = pf.npf.npf_road_drive_through_penalty 285type = SLE_UINT 286from = SLV_47 287def = 8 * NPF_TILE_LENGTH 288min = 0 289max = 100000 290cat = SC_EXPERT 291 292[SDT_VAR] 293var = pf.npf.npf_road_dt_occupied_penalty 294type = SLE_UINT 295from = SLV_130 296def = 8 * NPF_TILE_LENGTH 297min = 0 298max = 100000 299cat = SC_EXPERT 300 301[SDT_VAR] 302var = pf.npf.npf_road_bay_occupied_penalty 303type = SLE_UINT 304from = SLV_130 305def = 15 * NPF_TILE_LENGTH 306min = 0 307max = 100000 308cat = SC_EXPERT 309 310[SDT_VAR] 311var = pf.npf.maximum_go_to_depot_penalty 312type = SLE_UINT 313from = SLV_131 314def = 20 * NPF_TILE_LENGTH 315min = 0 316max = 1000000 317cat = SC_EXPERT 318 319[SDT_BOOL] 320var = pf.yapf.disable_node_optimization 321from = SLV_28 322def = false 323cat = SC_EXPERT 324 325[SDT_VAR] 326var = pf.yapf.max_search_nodes 327type = SLE_UINT 328from = SLV_28 329def = 10000 330min = 500 331max = 1000000 332cat = SC_EXPERT 333 334[SDT_BOOL] 335var = pf.yapf.rail_firstred_twoway_eol 336from = SLV_28 337def = false 338cat = SC_EXPERT 339 340[SDT_VAR] 341var = pf.yapf.rail_firstred_penalty 342type = SLE_UINT 343from = SLV_28 344def = 10 * YAPF_TILE_LENGTH 345min = 0 346max = 1000000 347cat = SC_EXPERT 348 349[SDT_VAR] 350var = pf.yapf.rail_firstred_exit_penalty 351type = SLE_UINT 352from = SLV_28 353def = 100 * YAPF_TILE_LENGTH 354min = 0 355max = 1000000 356cat = SC_EXPERT 357 358[SDT_VAR] 359var = pf.yapf.rail_lastred_penalty 360type = SLE_UINT 361from = SLV_28 362def = 10 * YAPF_TILE_LENGTH 363min = 0 364max = 1000000 365cat = SC_EXPERT 366 367[SDT_VAR] 368var = pf.yapf.rail_lastred_exit_penalty 369type = SLE_UINT 370from = SLV_28 371def = 100 * YAPF_TILE_LENGTH 372min = 0 373max = 1000000 374cat = SC_EXPERT 375 376[SDT_VAR] 377var = pf.yapf.rail_station_penalty 378type = SLE_UINT 379from = SLV_28 380def = 10 * YAPF_TILE_LENGTH 381min = 0 382max = 1000000 383cat = SC_EXPERT 384 385[SDT_VAR] 386var = pf.yapf.rail_slope_penalty 387type = SLE_UINT 388from = SLV_28 389def = 2 * YAPF_TILE_LENGTH 390min = 0 391max = 1000000 392cat = SC_EXPERT 393 394[SDT_VAR] 395var = pf.yapf.rail_curve45_penalty 396type = SLE_UINT 397from = SLV_28 398def = 1 * YAPF_TILE_LENGTH 399min = 0 400max = 1000000 401cat = SC_EXPERT 402 403[SDT_VAR] 404var = pf.yapf.rail_curve90_penalty 405type = SLE_UINT 406from = SLV_28 407def = 6 * YAPF_TILE_LENGTH 408min = 0 409max = 1000000 410cat = SC_EXPERT 411 412[SDT_VAR] 413var = pf.yapf.rail_depot_reverse_penalty 414type = SLE_UINT 415from = SLV_28 416def = 50 * YAPF_TILE_LENGTH 417min = 0 418max = 1000000 419cat = SC_EXPERT 420 421[SDT_VAR] 422var = pf.yapf.rail_crossing_penalty 423type = SLE_UINT 424from = SLV_28 425def = 3 * YAPF_TILE_LENGTH 426min = 0 427max = 1000000 428cat = SC_EXPERT 429 430[SDT_VAR] 431var = pf.yapf.rail_look_ahead_max_signals 432type = SLE_UINT 433from = SLV_28 434def = 10 435min = 1 436max = 100 437cat = SC_EXPERT 438 439[SDT_VAR] 440var = pf.yapf.rail_look_ahead_signal_p0 441type = SLE_INT 442from = SLV_28 443def = 500 444min = -1000000 445max = 1000000 446cat = SC_EXPERT 447 448[SDT_VAR] 449var = pf.yapf.rail_look_ahead_signal_p1 450type = SLE_INT 451from = SLV_28 452def = -100 453min = -1000000 454max = 1000000 455cat = SC_EXPERT 456 457[SDT_VAR] 458var = pf.yapf.rail_look_ahead_signal_p2 459type = SLE_INT 460from = SLV_28 461def = 5 462min = -1000000 463max = 1000000 464cat = SC_EXPERT 465 466[SDT_VAR] 467var = pf.yapf.rail_pbs_cross_penalty 468type = SLE_UINT 469from = SLV_100 470def = 3 * YAPF_TILE_LENGTH 471min = 0 472max = 1000000 473cat = SC_EXPERT 474 475[SDT_VAR] 476var = pf.yapf.rail_pbs_station_penalty 477type = SLE_UINT 478from = SLV_100 479def = 8 * YAPF_TILE_LENGTH 480min = 0 481max = 1000000 482cat = SC_EXPERT 483 484[SDT_VAR] 485var = pf.yapf.rail_pbs_signal_back_penalty 486type = SLE_UINT 487from = SLV_100 488def = 15 * YAPF_TILE_LENGTH 489min = 0 490max = 1000000 491cat = SC_EXPERT 492 493[SDT_VAR] 494var = pf.yapf.rail_doubleslip_penalty 495type = SLE_UINT 496from = SLV_100 497def = 1 * YAPF_TILE_LENGTH 498min = 0 499max = 1000000 500cat = SC_EXPERT 501 502[SDT_VAR] 503var = pf.yapf.rail_longer_platform_penalty 504type = SLE_UINT 505from = SLV_33 506def = 8 * YAPF_TILE_LENGTH 507min = 0 508max = 20000 509cat = SC_EXPERT 510 511[SDT_VAR] 512var = pf.yapf.rail_longer_platform_per_tile_penalty 513type = SLE_UINT 514from = SLV_33 515def = 0 * YAPF_TILE_LENGTH 516min = 0 517max = 20000 518cat = SC_EXPERT 519 520[SDT_VAR] 521var = pf.yapf.rail_shorter_platform_penalty 522type = SLE_UINT 523from = SLV_33 524def = 40 * YAPF_TILE_LENGTH 525min = 0 526max = 20000 527cat = SC_EXPERT 528 529[SDT_VAR] 530var = pf.yapf.rail_shorter_platform_per_tile_penalty 531type = SLE_UINT 532from = SLV_33 533def = 0 * YAPF_TILE_LENGTH 534min = 0 535max = 20000 536cat = SC_EXPERT 537 538[SDT_VAR] 539var = pf.yapf.road_slope_penalty 540type = SLE_UINT 541from = SLV_33 542def = 2 * YAPF_TILE_LENGTH 543min = 0 544max = 1000000 545cat = SC_EXPERT 546 547[SDT_VAR] 548var = pf.yapf.road_curve_penalty 549type = SLE_UINT 550from = SLV_33 551def = 1 * YAPF_TILE_LENGTH 552min = 0 553max = 1000000 554cat = SC_EXPERT 555 556[SDT_VAR] 557var = pf.yapf.road_crossing_penalty 558type = SLE_UINT 559from = SLV_33 560def = 3 * YAPF_TILE_LENGTH 561min = 0 562max = 1000000 563cat = SC_EXPERT 564 565[SDT_VAR] 566var = pf.yapf.road_stop_penalty 567type = SLE_UINT 568from = SLV_47 569def = 8 * YAPF_TILE_LENGTH 570min = 0 571max = 1000000 572cat = SC_EXPERT 573 574[SDT_VAR] 575var = pf.yapf.road_stop_occupied_penalty 576type = SLE_UINT 577from = SLV_130 578def = 8 * YAPF_TILE_LENGTH 579min = 0 580max = 1000000 581cat = SC_EXPERT 582 583[SDT_VAR] 584var = pf.yapf.road_stop_bay_occupied_penalty 585type = SLE_UINT 586from = SLV_130 587def = 15 * YAPF_TILE_LENGTH 588min = 0 589max = 1000000 590cat = SC_EXPERT 591 592[SDT_VAR] 593var = pf.yapf.maximum_go_to_depot_penalty 594type = SLE_UINT 595from = SLV_131 596def = 20 * YAPF_TILE_LENGTH 597min = 0 598max = 1000000 599cat = SC_EXPERT 600 601[SDT_VAR] 602var = pf.yapf.ship_curve45_penalty 603type = SLE_UINT 604from = SLV_SHIP_CURVE_PENALTY 605def = 1 * YAPF_TILE_LENGTH 606min = 0 607max = 1000000 608cat = SC_EXPERT 609 610[SDT_VAR] 611var = pf.yapf.ship_curve90_penalty 612type = SLE_UINT 613from = SLV_SHIP_CURVE_PENALTY 614def = 6 * YAPF_TILE_LENGTH 615min = 0 616max = 1000000 617cat = SC_EXPERT 618