(svn r21879) -Codechange: reset vehicle's GOINGUP/DOWN bits when it crashes

This commit is contained in:
smatz 2011-01-21 16:20:55 +00:00
parent 46dfdfd72b
commit e308c348f0
3 changed files with 17 additions and 2 deletions

View File

@ -86,6 +86,21 @@ struct GroundVehicle : public SpecializedVehicle<T, Type> {
void CargoChanged();
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.

View File

@ -460,7 +460,7 @@ static Vehicle *EnumCheckRoadVehCrashTrain(Vehicle *v, void *data)
uint RoadVehicle::Crash(bool flooded)
{
uint pass = Vehicle::Crash(flooded);
uint pass = this->GroundVehicleBase::Crash(flooded);
if (this->IsFrontEngine()) {
pass += 1; // driver

View File

@ -2780,7 +2780,7 @@ uint Train::Crash(bool flooded)
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;