(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.

This commit is contained in:
peter1138 2006-01-23 21:05:05 +00:00
parent 70efa805cb
commit 0f28e74e3e
1 changed files with 6 additions and 3 deletions

View File

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