forked from mirror/OpenTTD
(svn r21933) -Codechange: Split cur_order_index into cur_auto_order_index and cur_real_order_index to keep track of the current real order in an unambiguous way.
-Fix [FS#4440]: Automatic orders behave now stable wrt. service orders and are not added or removed depending on the need of servicing. -Fix: Various other issues with automatic orders, e.g. vehicles getting stuck with "no orders" when there are automatic orders at the end of the order list.
This commit is contained in:
@@ -234,7 +234,7 @@ TileIndex Ship::GetOrderStationLocation(StationID station)
|
||||
if (st->dock_tile != INVALID_TILE) {
|
||||
return TILE_ADD(st->dock_tile, ToTileIndexDiff(GetDockOffset(st->dock_tile)));
|
||||
} else {
|
||||
this->IncrementOrderIndex();
|
||||
this->IncrementRealOrderIndex();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -480,7 +480,7 @@ static void ShipController(Ship *v)
|
||||
/* We got within 3 tiles of our target buoy, so let's skip to our
|
||||
* next order */
|
||||
UpdateVehicleTimetable(v, true);
|
||||
v->IncrementOrderIndex();
|
||||
v->IncrementRealOrderIndex();
|
||||
v->current_order.MakeDummy();
|
||||
} else {
|
||||
/* Non-buoy orders really need to reach the tile */
|
||||
@@ -500,7 +500,7 @@ static void ShipController(Ship *v)
|
||||
v->BeginLoading();
|
||||
} else { // leave stations without docks right aways
|
||||
v->current_order.MakeLeaveStation();
|
||||
v->IncrementOrderIndex();
|
||||
v->IncrementRealOrderIndex();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user