diff options
author | michi_cc <michi_cc@openttd.org> | 2008-10-31 16:46:34 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2008-10-31 16:46:34 +0000 |
commit | 147304b83de4171b697568251fdd5a077299d19d (patch) | |
tree | 5fb05aa24edb4aa495283e7a364019ddef317e3e /src | |
parent | 6e3fc8979967b507711ad9e82cade470fd8a4bf6 (diff) | |
download | openttd-147304b83de4171b697568251fdd5a077299d19d.tar.xz |
(svn r14550) -Fix [FS#2391]: Don't assert on path look-ahead when processing a not-part-of-orders depot-order.
Diffstat (limited to 'src')
-rw-r--r-- | src/train_cmd.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 67245fe26..96fd4dd07 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2926,8 +2926,12 @@ static Track ChooseTrainTrack(Vehicle* v, TileIndex tile, DiagDirection enterdir VehicleOrderSaver orders(v); /* If the current tile is the destination of the current order and - * a reservation was requested, advance to the next order. */ - if (v->tile == v->dest_tile || (v->current_order.IsType(OT_GOTO_STATION) && IsRailwayStationTile(v->tile) && v->current_order.GetDestination() == GetStationIndex(v->tile))) { + * a reservation was requested, advance to the next order. + * Don't advance on a depot order as depots are always safe end points + * for a path and no look-ahead is necessary. This also avoids a + * problem with depot orders not part of the order list when the + * order list itself is empty. */ + if (!v->current_order.IsType(OT_GOTO_DEPOT) && (v->tile == v->dest_tile || (v->current_order.IsType(OT_GOTO_STATION) && IsRailwayStationTile(v->tile) && v->current_order.GetDestination() == GetStationIndex(v->tile)))) { orders.SwitchToNextOrder(); } |