(svn r13966) -Codechange [YAPP]: Bar level crossings upon path reservation. (michi_cc)

This commit is contained in:
rubidium
2008-08-02 22:57:18 +00:00
parent 2a567afff4
commit 1e549a0fcc
2 changed files with 12 additions and 3 deletions

View File

@@ -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);
}