summaryrefslogtreecommitdiff
path: root/src/roadveh_cmd.cpp
diff options
context:
space:
mode:
authormichi_cc <michi_cc@openttd.org>2011-11-04 15:04:29 +0000
committermichi_cc <michi_cc@openttd.org>2011-11-04 15:04:29 +0000
commita3e6e113fe1f5a00d2d62ddac207a3bc12dec97c (patch)
tree20f5ed8eebb1b2d7108ad823c611db923832449a /src/roadveh_cmd.cpp
parentad2fdd8d6fefe8cde63aa4147ae5cd77ebae49d5 (diff)
downloadopenttd-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.cpp9
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 */