summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--train_cmd.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/train_cmd.c b/train_cmd.c
index fdaeea335..626398585 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -963,6 +963,25 @@ static void ReverseTrainDirection(Vehicle *v)
if (IsTrainDepotTile(v->tile))
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
+ /* Check if we were approaching a rail/road-crossing */
+ {
+ TileIndex tile = v->tile;
+ int t;
+ /* Determine the non-diagonal direction in which we will exit this tile */
+ t = v->direction >> 1;
+ if (!(v->direction & 1) && v->u.rail.track != _state_dir_table[t]) {
+ t = (t - 1) & 3;
+ }
+ /* Calculate next tile */
+ tile += _tileoffs_by_dir[t];
+ if (IS_TILETYPE(tile, MP_STREET) && (_map5[tile] & 0xF0)==0x10) {
+ if (_map5[tile] & 4) {
+ _map5[tile] &= ~4;
+ MarkTileDirtyByTile(tile);
+ }
+ }
+ }
+
// count number of vehicles
u = v;
do r++; while ( (u = u->next) != NULL );