Fix handling of reservations when reserving at one way tunnel-bridge exit
This commit is contained in:
@@ -3781,6 +3781,8 @@ void FreeTrainTrackReservation(Train *v, TileIndex origin, Trackdir orig_td)
|
|||||||
TileIndex end = GetOtherTunnelBridgeEnd(tile);
|
TileIndex end = GetOtherTunnelBridgeEnd(tile);
|
||||||
bool free = TunnelBridgeIsFree(tile, end, v, TBIFM_ACROSS_ONLY).Succeeded();
|
bool free = TunnelBridgeIsFree(tile, end, v, TBIFM_ACROSS_ONLY).Succeeded();
|
||||||
if (!free) break;
|
if (!free) break;
|
||||||
|
} else if (IsTunnelBridgeWithSignalSimulation(tile) && IsTunnelBridgeSignalSimulationExitOnly(tile) && TrackdirEntersTunnelBridge(tile, td)) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't free first station/bridge/tunnel if we are on it. */
|
/* Don't free first station/bridge/tunnel if we are on it. */
|
||||||
@@ -5723,6 +5725,9 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
goto reverse_train_direction;
|
goto reverse_train_direction;
|
||||||
|
} else if (!(v->track & TRACK_BIT_WORMHOLE) && IsTunnelBridgeWithSignalSimulation(gp.new_tile) &&
|
||||||
|
IsTunnelBridgeSignalSimulationExitOnly(gp.new_tile) && v->force_proceed == TFP_NONE) {
|
||||||
|
goto reverse_train_direction;
|
||||||
} else {
|
} else {
|
||||||
TryReserveRailTrack(gp.new_tile, TrackBitsToTrack(chosen_track), false);
|
TryReserveRailTrack(gp.new_tile, TrackBitsToTrack(chosen_track), false);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user