mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 05:15:21 +00:00
(svn r13966) -Codechange [YAPP]: Bar level crossings upon path reservation. (michi_cc)
This commit is contained in:
parent
88b1ee0b43
commit
bba8ff290e
@ -101,6 +101,8 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||
case MP_ROAD:
|
||||
if (IsLevelCrossing(tile) && !GetCrossingReservation(tile)) {
|
||||
SetCrossingReservation(tile, true);
|
||||
BarCrossing(tile);
|
||||
MarkTileDirtyByTile(tile);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
@ -149,7 +151,10 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||
break;
|
||||
|
||||
case MP_ROAD:
|
||||
if (IsLevelCrossing(tile)) SetCrossingReservation(tile, false);
|
||||
if (IsLevelCrossing(tile)) {
|
||||
SetCrossingReservation(tile, false);
|
||||
UpdateLevelCrossing(tile);
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_STATION:
|
||||
|
@ -1773,8 +1773,8 @@ void UpdateLevelCrossing(TileIndex tile, bool sound)
|
||||
{
|
||||
assert(IsLevelCrossingTile(tile));
|
||||
|
||||
/* train on crossing || train approaching crossing */
|
||||
bool new_state = VehicleFromPos(tile, NULL, &TrainOnTileEnum) != NULL || TrainApproachingCrossing(tile);
|
||||
/* train on crossing || train approaching crossing || reserved */
|
||||
bool new_state = VehicleFromPos(tile, NULL, &TrainOnTileEnum) != NULL || TrainApproachingCrossing(tile) || GetCrossingReservation(tile);
|
||||
|
||||
if (new_state != IsCrossingBarred(tile)) {
|
||||
if (new_state && sound) {
|
||||
@ -3734,6 +3734,10 @@ static void TrainController(Vehicle *v, Vehicle *nomove, bool update_image)
|
||||
if (IsFrontEngine(v)) {
|
||||
v->load_unload_time_rem = 0;
|
||||
|
||||
/* If we are approching a crossing that is reserved, play the sound now. */
|
||||
TileIndex crossing = TrainApproachingCrossingTile(v);
|
||||
if (crossing != INVALID_TILE && GetCrossingReservation(crossing)) SndPlayTileFx(SND_0E_LEVEL_CROSSING, crossing);
|
||||
|
||||
/* Always try to extend the reservation when entering a tile. */
|
||||
CheckNextTrainTile(v);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user