diff options
author | michi_cc <michi_cc@openttd.org> | 2011-11-04 15:04:29 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2011-11-04 15:04:29 +0000 |
commit | a3e6e113fe1f5a00d2d62ddac207a3bc12dec97c (patch) | |
tree | 20f5ed8eebb1b2d7108ad823c611db923832449a /src/roadveh_cmd.cpp | |
parent | ad2fdd8d6fefe8cde63aa4147ae5cd77ebae49d5 (diff) | |
download | openttd-a3e6e113fe1f5a00d2d62ddac207a3bc12dec97c.tar.xz |
(svn r23112) -Codechange: Check if vehicle chain lengths stays constant when auto-refitting.
Diffstat (limited to 'src/roadveh_cmd.cpp')
-rw-r--r-- | src/roadveh_cmd.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 596c57862..74e1e9c14 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -174,9 +174,10 @@ static uint GetRoadVehLength(const RoadVehicle *v) /** * Update the cache of a road vehicle. * @param v Road vehicle needing an update of its cache. + * @param same_length should length of vehicles stay the same? * @pre \a v must be first road vehicle. */ -void RoadVehUpdateCache(RoadVehicle *v) +void RoadVehUpdateCache(RoadVehicle *v, bool same_length) { assert(v->type == VEH_ROAD); assert(v->IsFrontEngine()); @@ -193,7 +194,11 @@ void RoadVehUpdateCache(RoadVehicle *v) u->gcache.first_engine = (v == u) ? INVALID_ENGINE : v->engine_type; /* Update the length of the vehicle. */ - u->gcache.cached_veh_length = GetRoadVehLength(u); + uint veh_len = GetRoadVehLength(u); + /* Verify length hasn't changed. */ + if (same_length && veh_len != u->gcache.cached_veh_length) VehicleLengthChanged(u); + + u->gcache.cached_veh_length = veh_len; v->gcache.cached_total_length += u->gcache.cached_veh_length; /* Update visual effect */ |