From 21ba849dbda777f7db73377661206d1a021a67dc Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 23 Jan 2006 21:05:05 +0000 Subject: [PATCH] (svn r3422) - Fix: If an engine reaches the rear of a depot, make the engine turn around before it reaches the tile end (same as a normal end of line.) This fixes a bug whereby the engine could poke into the depot and crash with another engine just leaving it. --- train_cmd.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/train_cmd.c b/train_cmd.c index 424e53b5ae..114741b238 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -3294,7 +3294,7 @@ static bool TrainCheckIfLineEnds(Vehicle *v) TileIndex tile; uint x,y; uint16 break_speed; - int t; + DiagDirection t; uint32 ts; byte trackdir; @@ -3368,8 +3368,11 @@ static bool TrainCheckIfLineEnds(Vehicle *v) } if (GB(ts, 0, 16) != 0) { - /* If we approach a rail-piece which we can't enter, don't enter it! */ - if (x + 4 > 15 && !CheckCompatibleRail(v, tile)) { + /* If we approach a rail-piece which we can't enter, or the back of a depot, don't enter it! */ + if (x + 4 > 15 && + (!CheckCompatibleRail(v, tile) || + (IsTileDepotType(tile, TRANSPORT_RAIL) && + GetDepotDirection(tile, TRANSPORT_RAIL) == t))) { v->cur_speed = 0; ReverseTrainDirection(v); return false;