Adjacent crossings: add setting (in PATX), add info to SLXI chunk.
This commit is contained in:
@@ -1703,6 +1703,9 @@ STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Allow trains to
|
||||
|
||||
STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Change setting value
|
||||
|
||||
STR_CONFIG_SETTING_ADJACENT_CROSSINGS :Close adjacent level crossings: {STRING2}
|
||||
STR_CONFIG_SETTING_ADJACENT_CROSSINGS_HELPTEXT :Closes all adjacent level crossings on parallel tracks whenever one or more is occupied
|
||||
|
||||
# Config errors
|
||||
STR_CONFIG_ERROR :{WHITE}Error with the configuration file...
|
||||
STR_CONFIG_ERROR_ARRAY :{WHITE}... error in array '{RAW_STRING}'
|
||||
|
@@ -45,6 +45,7 @@ std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks
|
||||
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk
|
||||
|
||||
const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||
{ XSLFI_ADJACENT_CROSSINGS, XSCF_NULL, 1, 1, "adjacent_crossings", NULL, NULL, NULL },
|
||||
{ XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker
|
||||
};
|
||||
|
||||
|
@@ -21,6 +21,7 @@
|
||||
*/
|
||||
enum SlXvFeatureIndex {
|
||||
XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use
|
||||
XSLFI_ADJACENT_CROSSINGS, ///< Adjacent level crossings closure patch
|
||||
|
||||
XSLFI_SIZE, ///< Total count of features, including null feature
|
||||
};
|
||||
|
@@ -1626,6 +1626,7 @@ static SettingsContainer &GetSettingsTree()
|
||||
|
||||
vehicles->Add(new SettingEntry("order.no_servicing_if_no_breakdowns"));
|
||||
vehicles->Add(new SettingEntry("order.serviceathelipad"));
|
||||
vehicles->Add(new SettingEntry("vehicle.adjacent_crossings"));
|
||||
}
|
||||
|
||||
SettingsPage *limitations = main->Add(new SettingsPage(STR_CONFIG_SETTING_LIMITATIONS));
|
||||
|
@@ -462,6 +462,7 @@ struct VehicleSettings {
|
||||
byte extend_vehicle_life; ///< extend vehicle life by this many years
|
||||
byte road_side; ///< the side of the road vehicles drive on
|
||||
uint8 plane_crashes; ///< number of plane crashes, 0 = none, 1 = reduced, 2 = normal
|
||||
bool adjacent_crossings; ///< enable closing of adjacent level crossings
|
||||
};
|
||||
|
||||
/** Settings related to the economy. */
|
||||
|
@@ -2506,6 +2506,16 @@ def = NULL
|
||||
proc = RedrawScreen
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_BOOL]
|
||||
base = GameSettings
|
||||
var = vehicle.adjacent_crossings
|
||||
guiflags = SGF_NO_NETWORK
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_ADJACENT_CROSSINGS
|
||||
strhelp = STR_CONFIG_SETTING_ADJACENT_CROSSINGS_HELPTEXT
|
||||
cat = SC_BASIC
|
||||
patxname = ""adjacent_crossings.vehicle.adjacent_crossings""
|
||||
|
||||
|
||||
;***************************************************************************
|
||||
; Unsaved setting variables.
|
||||
|
@@ -1723,11 +1723,13 @@ void UpdateLevelCrossing(TileIndex tile, bool sound)
|
||||
|
||||
Axis axis = GetCrossingRoadAxis(tile);
|
||||
|
||||
for (TileIndex t = tile; !is_forced && IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, AxisToDiagDir(GetCrossingRoadAxis(t)))) {
|
||||
is_forced |= CheckLevelCrossing(t);
|
||||
}
|
||||
for (TileIndex t = tile; !is_forced && IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, ReverseDiagDir(AxisToDiagDir(GetCrossingRoadAxis(t))))) {
|
||||
is_forced |= CheckLevelCrossing(t);
|
||||
if (_settings_game.vehicle.adjacent_crossings) {
|
||||
for (TileIndex t = tile; !is_forced && IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, AxisToDiagDir(GetCrossingRoadAxis(t)))) {
|
||||
is_forced |= CheckLevelCrossing(t);
|
||||
}
|
||||
for (TileIndex t = tile; !is_forced && IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, ReverseDiagDir(AxisToDiagDir(GetCrossingRoadAxis(t))))) {
|
||||
is_forced |= CheckLevelCrossing(t);
|
||||
}
|
||||
}
|
||||
|
||||
for (TileIndex t = tile; IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, AxisToDiagDir(GetCrossingRoadAxis(t)))) {
|
||||
|
Reference in New Issue
Block a user