mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-17 03:29:09 +00:00
(svn r3353) Simplify the automatic length adjustment algorithm for replacing trains: Use the length of the train before the replacement as reference length
This commit is contained in:
24
train_cmd.c
24
train_cmd.c
@@ -755,9 +755,6 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
SetFrontEngine(v);
|
||||
SetTrainEngine(v);
|
||||
|
||||
v->u.rail.shortest_platform[0] = 255;
|
||||
v->u.rail.shortest_platform[1] = 0;
|
||||
|
||||
VehiclePositionChanged(v);
|
||||
|
||||
if (rvi->flags & RVI_MULTIHEAD) {
|
||||
@@ -2427,27 +2424,6 @@ static bool ProcessTrainOrder(Vehicle *v)
|
||||
|
||||
v->dest_tile = 0;
|
||||
|
||||
// store the station length if no shorter station was visited this order round
|
||||
if (v->cur_order_index == 0) {
|
||||
if (v->u.rail.shortest_platform[1] != 0 && v->u.rail.shortest_platform[1] != 255) {
|
||||
// we went though a whole round of orders without interruptions, so we store the length of the shortest station
|
||||
v->u.rail.shortest_platform[0] = v->u.rail.shortest_platform[1];
|
||||
}
|
||||
// all platforms are shorter than 255, so now we can find the shortest in the next order round. They might have changed size
|
||||
v->u.rail.shortest_platform[1] = 255;
|
||||
}
|
||||
|
||||
if (v->last_station_visited != INVALID_STATION) {
|
||||
Station *st = GetStation(v->last_station_visited);
|
||||
if (TileBelongsToRailStation(st, v->tile)) {
|
||||
byte length = GetStationPlatforms(st, v->tile);
|
||||
|
||||
if (length < v->u.rail.shortest_platform[1]) {
|
||||
v->u.rail.shortest_platform[1] = length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result = false;
|
||||
switch (order->type) {
|
||||
case OT_GOTO_STATION:
|
||||
|
Reference in New Issue
Block a user