|
|
|
@ -494,13 +494,12 @@ inline int RoadVehicle::GetCurrentMaxSpeed() const
|
|
|
|
|
for (const RoadVehicle *u = this; u != nullptr; u = u->Next()) {
|
|
|
|
|
if (_settings_game.vehicle.roadveh_acceleration_model == AM_REALISTIC) {
|
|
|
|
|
if (this->state <= RVSB_TRACKDIR_MASK && IsReversingRoadTrackdir((Trackdir)this->state)) {
|
|
|
|
|
max_speed = this->gcache.cached_max_track_speed / 2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Are we in a curve and should slow down?
|
|
|
|
|
if (((u->direction & 1) == 0) && _settings_game.vehicle.slow_road_vehicles_in_curves) {
|
|
|
|
|
max_speed = this->gcache.cached_max_track_speed * 3 / 4;
|
|
|
|
|
max_speed = std::min(max_speed, this->gcache.cached_max_track_speed / 2);
|
|
|
|
|
} else if ((u->direction & 1) == 0) {
|
|
|
|
|
// Are we in a curve and should slow down?
|
|
|
|
|
if (_settings_game.vehicle.slow_road_vehicles_in_curves) {
|
|
|
|
|
max_speed = std::min(max_speed, this->gcache.cached_max_track_speed * 3 / 4);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|