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);
|
||||
bool free = TunnelBridgeIsFree(tile, end, v, TBIFM_ACROSS_ONLY).Succeeded();
|
||||
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. */
|
||||
@@ -5723,6 +5725,9 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
|
||||
return false;
|
||||
}
|
||||
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 {
|
||||
TryReserveRailTrack(gp.new_tile, TrackBitsToTrack(chosen_track), false);
|
||||
|
||||
|
Reference in New Issue
Block a user