Fix 90° turns being wrongly detected across bridges of non-zero length
This prevented reservations
This commit is contained in:
@@ -2120,7 +2120,7 @@ static void CheckNextTrainTile(Train *v)
|
||||
if (HasPbsSignalOnTrackdir(ft.m_new_tile, FindFirstTrackdir(ft.m_new_td_bits))) {
|
||||
/* If the next tile is a PBS signal, try to make a reservation. */
|
||||
TrackBits tracks = TrackdirBitsToTrackBits(ft.m_new_td_bits);
|
||||
if (_settings_game.pf.forbid_90_deg) {
|
||||
if (_settings_game.pf.forbid_90_deg && ft.m_tiles_skipped == 0) {
|
||||
tracks &= ~TrackCrossesTracks(TrackdirToTrack(ft.m_old_td));
|
||||
}
|
||||
ChooseTrainTrack(v, ft.m_new_tile, ft.m_exitdir, tracks, false, NULL, false);
|
||||
@@ -2364,7 +2364,7 @@ static PBSTileInfo ExtendTrainReservation(const Train *v, TrackBits *new_tracks,
|
||||
if (HasOnewaySignalBlockingTrackdir(ft.m_new_tile, FindFirstTrackdir(ft.m_new_td_bits))) break;
|
||||
}
|
||||
|
||||
if (_settings_game.pf.forbid_90_deg) {
|
||||
if (_settings_game.pf.forbid_90_deg && ft.m_tiles_skipped == 0) {
|
||||
ft.m_new_td_bits &= ~TrackdirCrossesTrackdirs(ft.m_old_td);
|
||||
if (ft.m_new_td_bits == TRACKDIR_BIT_NONE) break;
|
||||
}
|
||||
@@ -2416,7 +2416,7 @@ static PBSTileInfo ExtendTrainReservation(const Train *v, TrackBits *new_tracks,
|
||||
while (tile != stopped || cur_td != stopped_td) {
|
||||
if (!ft.Follow(tile, cur_td)) break;
|
||||
|
||||
if (_settings_game.pf.forbid_90_deg) {
|
||||
if (_settings_game.pf.forbid_90_deg && ft.m_tiles_skipped == 0) {
|
||||
ft.m_new_td_bits &= ~TrackdirCrossesTrackdirs(ft.m_old_td);
|
||||
assert(ft.m_new_td_bits != TRACKDIR_BIT_NONE);
|
||||
}
|
||||
|
Reference in New Issue
Block a user