Fix rail platforms being left partially reserved after deleting train
Due to company being removed when infrastructure sharing in use
This commit is contained in:
@@ -1423,6 +1423,17 @@ CommandCost FindJoiningWaypoint(StationID existing_waypoint, StationID waypoint_
|
||||
[is_road](Waypoint *wp) -> bool { return HasBit(wp->waypoint_flags, WPF_ROAD) == is_road; });
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear any rail station platform reservation ahead of and behind train.
|
||||
* @param v vehicle which may hold reservations
|
||||
*/
|
||||
void FreeTrainStationPlatformReservation(const Train *v)
|
||||
{
|
||||
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), false);
|
||||
v = v->Last();
|
||||
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear platform reservation during station building/removing.
|
||||
* @param v vehicle which holds reservation
|
||||
@@ -1430,9 +1441,7 @@ CommandCost FindJoiningWaypoint(StationID existing_waypoint, StationID waypoint_
|
||||
static void FreeTrainReservation(Train *v)
|
||||
{
|
||||
FreeTrainTrackReservation(v);
|
||||
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), false);
|
||||
v = v->Last();
|
||||
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), false);
|
||||
FreeTrainStationPlatformReservation(v);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user