internal static void ApplyEmergencyBrake(Train Train)
{
// sound
if (!Train.Specs.CurrentEmergencyBrake.Driver)
{
Sounds.SoundBuffer buffer = Train.Cars[Train.DriverCar].Sounds.BrakeHandleMax.Buffer;
if (buffer != null)
{
OpenBveApi.Math.Vector3 pos = Train.Cars[Train.DriverCar].Sounds.BrakeHandleMax.Position;
Sounds.PlaySound(buffer, 1.0, 1.0, pos, Train, Train.DriverCar, false);
}
for (int i = 0; i < Train.Cars.Length; i++)
{
buffer = Train.Cars[Train.DriverCar].Sounds.EmrBrake.Buffer;
if (buffer != null)
{
OpenBveApi.Math.Vector3 pos = Train.Cars[i].Sounds.EmrBrake.Position;
Sounds.PlaySound(buffer, 1.0, 1.0, pos, Train, Train.DriverCar, false);
}
}
}
// apply
ApplyNotch(Train, 0, !Train.Specs.SingleHandle, Train.Specs.MaximumBrakeNotch, true);
ApplyAirBrakeHandle(Train, AirBrakeHandleState.Service);
Train.Specs.CurrentEmergencyBrake.Driver = true;
Train.Specs.CurrentHoldBrake.Driver = false;
Train.Specs.CurrentConstSpeed = false;
// plugin
if (Train.Plugin == null) return;
Train.Plugin.UpdatePower();
Train.Plugin.UpdateBrake();
}