working with parameters to turn on and off now, still haven't fixed the articulated vehicles exception though

pull/603/head
reldred 8 months ago
parent 8a146e2136
commit dec7a3fc11

@ -1525,6 +1525,9 @@ STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Choose the driv
STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Drive on left STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Drive on left
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Drive on right STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Drive on right
STR_CONFIG_SETTING_DIAGONAL_ROADS :Diagonal Roads: {STRING2}
STR_CONFIG_SETTING_DIAGONAL_ROADS_HELPTEXT :Choose whether to turn smooth corners into diagonal roads
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING2} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING2}
###length 2 ###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise

@ -1315,7 +1315,7 @@ static bool RoadVehLeaveDepot(RoadVehicle *v, bool first)
v->direction = DiagDirToDir(dir); v->direction = DiagDirToDir(dir);
Trackdir tdir = DiagDirToDiagTrackdir(dir); Trackdir tdir = DiagDirToDiagTrackdir(dir);
const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype)][(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE) + tdir]; const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype) + (_settings_game.vehicle.diagonal_roads * 2)][(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE) + tdir];
int x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF); int x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF);
int y = TileY(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].y & 0xF); int y = TileY(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].y & 0xF);
@ -1713,7 +1713,7 @@ bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev)
/* Get move position data for next frame. /* Get move position data for next frame.
* For a drive-through road stop use 'straight road' move data. * For a drive-through road stop use 'straight road' move data.
* In this case v->state is masked to give the road stop entry direction. */ * In this case v->state is masked to give the road stop entry direction. */
RoadDriveEntry rd = _road_drive_data[GetRoadTramType(v->roadtype)][( RoadDriveEntry rd = _road_drive_data[GetRoadTramType(v->roadtype) + (_settings_game.vehicle.diagonal_roads * 2)][(
(HasBit(v->state, RVS_IN_DT_ROAD_STOP) ? v->state & RVSB_ROAD_STOP_TRACKDIR_MASK : v->state) + (HasBit(v->state, RVS_IN_DT_ROAD_STOP) ? v->state & RVSB_ROAD_STOP_TRACKDIR_MASK : v->state) +
(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE)) ^ v->overtaking][v->frame + 1]; (_settings_game.vehicle.road_side << RVS_DRIVE_SIDE)) ^ v->overtaking][v->frame + 1];
@ -1812,7 +1812,7 @@ again:
} }
/* Get position data for first frame on the new tile */ /* Get position data for first frame on the new tile */
const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype)][(dir + (_settings_game.vehicle.road_side << RVS_DRIVE_SIDE)) ^ v->overtaking]; const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype) + (_settings_game.vehicle.diagonal_roads * 2)][(dir + (_settings_game.vehicle.road_side << RVS_DRIVE_SIDE)) ^ v->overtaking];
int x = TileX(tile) * TILE_SIZE + rdp[start_frame].x; int x = TileX(tile) * TILE_SIZE + rdp[start_frame].x;
int y = TileY(tile) * TILE_SIZE + rdp[start_frame].y; int y = TileY(tile) * TILE_SIZE + rdp[start_frame].y;
@ -1928,7 +1928,7 @@ again:
return false; return false;
} }
const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype)][(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE) + dir]; const RoadDriveEntry *rdp = _road_drive_data[GetRoadTramType(v->roadtype) + (_settings_game.vehicle.diagonal_roads * 2)][(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE) + dir];
int x = TileX(v->tile) * TILE_SIZE + rdp[turn_around_start_frame].x; int x = TileX(v->tile) * TILE_SIZE + rdp[turn_around_start_frame].x;
int y = TileY(v->tile) * TILE_SIZE + rdp[turn_around_start_frame].y; int y = TileY(v->tile) * TILE_SIZE + rdp[turn_around_start_frame].y;

@ -2355,6 +2355,7 @@ static SettingsContainer &GetSettingsTree()
genworld->Add(new SettingEntry("game_creation.height_affects_rocks")); genworld->Add(new SettingEntry("game_creation.height_affects_rocks"));
genworld->Add(new SettingEntry("game_creation.tree_placer")); genworld->Add(new SettingEntry("game_creation.tree_placer"));
genworld->Add(new SettingEntry("vehicle.road_side")); genworld->Add(new SettingEntry("vehicle.road_side"));
genworld->Add(new SettingEntry("vehicle.diagonal_roads"));
genworld->Add(new SettingEntry("economy.larger_towns")); genworld->Add(new SettingEntry("economy.larger_towns"));
genworld->Add(new SettingEntry("economy.initial_city_size")); genworld->Add(new SettingEntry("economy.initial_city_size"));
genworld->Add(new SettingEntry("economy.town_layout")); genworld->Add(new SettingEntry("economy.town_layout"));

@ -665,6 +665,7 @@ struct VehicleSettings {
Year no_introduce_vehicles_after; ///< do not introduce vehicles after this year Year no_introduce_vehicles_after; ///< do not introduce vehicles after this year
byte extend_vehicle_life; ///< extend vehicle life by this many years byte extend_vehicle_life; ///< extend vehicle life by this many years
byte road_side; ///< the side of the road vehicles drive on byte road_side; ///< the side of the road vehicles drive on
bool diagonal_roads; ///< whether road corners are turned into diagonals
uint8 plane_crashes; ///< number of plane crashes, 0 = none, 1 = reduced, 2 = normal uint8 plane_crashes; ///< number of plane crashes, 0 = none, 1 = reduced, 2 = normal
bool adjacent_crossings; ///< enable closing of adjacent level crossings bool adjacent_crossings; ///< enable closing of adjacent level crossings
bool safer_crossings; ///< enable safer level crossings bool safer_crossings; ///< enable safer level crossings

@ -625,6 +625,14 @@ pre_cb = CheckRoadSide
post_cb = RoadSideChanged post_cb = RoadSideChanged
cat = SC_BASIC cat = SC_BASIC
[SDT_BOOL]
var = vehicle.diagonal_roads
flags = SF_NO_NETWORK
def = false
str = STR_CONFIG_SETTING_DIAGONAL_ROADS
strhelp = STR_CONFIG_SETTING_DIAGONAL_ROADS_HELPTEXT
cat = SC_EXPERT
; Construction ; Construction
[SDT_VAR] [SDT_VAR]

Loading…
Cancel
Save