(svn r27222) -Fix [FS#6278]: Use the current maximum speed as limited by bridges, orders etc. for all vehicle types alike when considering increased smoke emissions of vehicles.

This commit is contained in:
planetmaker 2015-04-09 18:17:43 +00:00
parent 983abcef4e
commit 55f42eaa1f

View File

@ -2414,7 +2414,9 @@ void Vehicle::ShowVisualEffect() const
return; return;
} }
uint max_speed = this->vcache.cached_max_speed; /* Use the speed as limited by underground and orders. */
uint max_speed = this->GetCurrentMaxSpeed();
if (this->type == VEH_TRAIN) { if (this->type == VEH_TRAIN) {
const Train *t = Train::From(this); const Train *t = Train::From(this);
/* For trains, do not show any smoke when: /* For trains, do not show any smoke when:
@ -2423,14 +2425,10 @@ void Vehicle::ShowVisualEffect() const
*/ */
if (HasBit(t->flags, VRF_REVERSING) || if (HasBit(t->flags, VRF_REVERSING) ||
(IsRailStationTile(t->tile) && t->IsFrontEngine() && t->current_order.ShouldStopAtStation(t, GetStationIndex(t->tile)) && (IsRailStationTile(t->tile) && t->IsFrontEngine() && t->current_order.ShouldStopAtStation(t, GetStationIndex(t->tile)) &&
t->cur_speed >= t->Train::GetCurrentMaxSpeed())) { t->cur_speed >= max_speed)) {
return; return;
} }
max_speed = min(max_speed, t->gcache.cached_max_track_speed);
max_speed = min(max_speed, this->current_order.GetMaxSpeed());
} }
if (this->type == VEH_ROAD || this->type == VEH_SHIP) max_speed = min(max_speed, this->current_order.GetMaxSpeed() * 2);
const Vehicle *v = this; const Vehicle *v = this;