changeset 17141:4ccee6c9442b draft

(svn r21879) -Codechange: reset vehicle's GOINGUP/DOWN bits when it crashes
author smatz <smatz@openttd.org>
date Fri, 21 Jan 2011 16:20:55 +0000
parents b70478c300d7
children 958bcdb45229
files src/ground_vehicle.hpp src/roadveh_cmd.cpp src/train_cmd.cpp
diffstat 3 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ground_vehicle.hpp
+++ b/src/ground_vehicle.hpp
@@ -87,6 +87,21 @@
 	int GetAcceleration() const;
 
 	/**
+	 * Common code executed for crashed ground vehicles
+	 * @param flooded was this vehicle flooded?
+	 * @return number of victims
+	 */
+	/* virtual */ uint Crash(bool flooded)
+	{
+		/* Crashed vehicles aren't going up or down */
+		for (T *v = T::From(this); v != NULL; v = v->Next()) {
+			ClrBit(v->gv_flags, GVF_GOINGUP_BIT);
+			ClrBit(v->gv_flags, GVF_GOINGDOWN_BIT);
+		}
+		return this->Vehicle::Crash(flooded);
+	}
+
+	/**
 	 * Calculates the total slope resistance for this vehicle.
 	 * @return Slope resistance.
 	 */
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -460,7 +460,7 @@
 
 uint RoadVehicle::Crash(bool flooded)
 {
-	uint pass = Vehicle::Crash(flooded);
+	uint pass = this->GroundVehicleBase::Crash(flooded);
 	if (this->IsFrontEngine()) {
 		pass += 1; // driver
 
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -2780,7 +2780,7 @@
 		HideFillingPercent(&this->fill_percent_te_id);
 	}
 
-	pass += Vehicle::Crash(flooded);
+	pass += this->GroundVehicleBase::Crash(flooded);
 
 	this->crash_anim_pos = flooded ? 4000 : 1; // max 4440, disappear pretty fast when flooded
 	return pass;