Add train cache flag for whether train using realistic braking physics

This commit is contained in:
Jonathan G Rennison
2021-04-15 19:39:36 +01:00
parent b514d29db1
commit ba2e6087b2
8 changed files with 30 additions and 20 deletions

View File

@@ -438,13 +438,13 @@ protected:
* @param advisory_max_speed The advisory maximum speed here, in vehicle specific units.
* @return Distance to drive.
*/
inline uint DoUpdateSpeed(GroundVehicleAcceleration accel, int min_speed, int max_speed, int advisory_max_speed)
inline uint DoUpdateSpeed(GroundVehicleAcceleration accel, int min_speed, int max_speed, int advisory_max_speed, bool use_realistic_braking)
{
const byte initial_subspeed = this->subspeed;
uint spd = this->subspeed + accel.acceleration;
this->subspeed = (byte)spd;
if (!(Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC)) {
if (!use_realistic_braking) {
max_speed = std::min(max_speed, advisory_max_speed);
}
@@ -469,7 +469,7 @@ protected:
}
if (this->cur_speed > max_speed) {
if (Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC && accel.braking >= 0) {
if (use_realistic_braking && accel.braking >= 0) {
extern void TrainBrakesOverheatedBreakdown(Vehicle *v);
TrainBrakesOverheatedBreakdown(this);
}
@@ -478,12 +478,12 @@ protected:
int tempspeed = this->cur_speed + ((int)spd >> 8);
if (Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC && tempspeed > advisory_max_speed && accel.braking != accel.acceleration) {
if (use_realistic_braking && tempspeed > advisory_max_speed && accel.braking != accel.acceleration) {
spd = initial_subspeed + accel.braking;
int braking_speed = this->cur_speed + ((int)spd >> 8);
if (braking_speed >= advisory_max_speed) {
if (braking_speed > tempmax) {
if (Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC && accel.braking >= 0) {
if (use_realistic_braking && accel.braking >= 0) {
extern void TrainBrakesOverheatedBreakdown(Vehicle *v);
TrainBrakesOverheatedBreakdown(this);
}