summaryrefslogtreecommitdiff
path: root/src/aircraft_cmd.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-12-04 20:29:46 +0000
committerrubidium <rubidium@openttd.org>2009-12-04 20:29:46 +0000
commit19fa38601d8df49c309052e8bccb8c2e4302b51e (patch)
tree52d8dac77300440aef8f3b55a6caad487d242816 /src/aircraft_cmd.cpp
parentc22f9679b5c9e5a637ccc006d0b69680b8894ea3 (diff)
downloadopenttd-19fa38601d8df49c309052e8bccb8c2e4302b51e.tar.xz
(svn r18402) -Codechange: unify/centralise the code for crashing vehicles
Diffstat (limited to 'src/aircraft_cmd.cpp')
-rw-r--r--src/aircraft_cmd.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp
index d363fd3d4..dd2884a8c 100644
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -1238,19 +1238,21 @@ void Aircraft::MarkDirty()
if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this);
}
-static void CrashAirplane(Aircraft *v)
+
+uint Aircraft::Crash(bool flooded)
{
- v->vehstatus |= VS_CRASHED;
- v->crashed_counter = 0;
+ uint pass = Vehicle::Crash(flooded) + 2; // pilots
+ this->crashed_counter = flooded ? 9000 : 0; // max 10000, disappear pretty fast when flooded
- CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE);
+ return pass;
+}
- v->MarkDirty();
- SetWindowDirty(WC_VEHICLE_VIEW, v->index);
+static void CrashAirplane(Aircraft *v)
+{
+ CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE);
- uint amt = 2;
- if (IsCargoInClass(v->cargo_type, CC_PASSENGERS)) amt += v->cargo.Count();
- SetDParam(0, amt);
+ uint pass = v->Crash();
+ SetDParam(0, pass);
v->cargo.Truncate(0);
v->Next()->cargo.Truncate(0);