Add train cache flag for whether train using realistic braking physics
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user