@@ -4076,6 +4076,8 @@ public void UnconditionalInitializeBrakes()
4076
4076
if (Simulator.Confirmer != null && IsActualPlayerTrain) // As Confirmer may not be created until after a restore.
4077
4077
Simulator.Confirmer.Confirm(CabControl.InitializeBrakes, CabSetting.Off);
4078
4078
4079
+ SetInitialBrakeModes();
4080
+
4079
4081
float maxPressurePSI = 90;
4080
4082
float fullServPressurePSI = 64;
4081
4083
if (FirstCar != null && FirstCar.BrakeSystem is VacuumSinglePipe)
@@ -4561,6 +4563,38 @@ public void CheckFreight()
4561
4563
if (TrainType == TRAINTYPE.AI_INCORPORATED && IncorporatingTrainNo > -1) IsPlayable = true;
4562
4564
} // CheckFreight
4563
4565
4566
+
4567
+ public void SetInitialBrakeModes()
4568
+ {
4569
+ var lead = LeadLocomotive ?? Cars?.FirstOrDefault();
4570
+ if (lead == null) return;
4571
+
4572
+ // Check if lead is vacuum-braked
4573
+ if (lead.BrakeSystem is VacuumSinglePipe || (lead.BrakeSystems?.Any(b => b.Value is VacuumSinglePipe) ?? false) &&
4574
+ Cars.Count(c => c.BrakeSystem is VacuumSinglePipe || c.BrakeSystem is ManualBraking ||
4575
+ (c.BrakeSystems?.Any(b => b.Value is VacuumSinglePipe || b.Value is ManualBraking) ?? false)) > Cars.Count / 3)
4576
+ {
4577
+ foreach (var car in Cars.Cast<MSTSWagon>())
4578
+ {
4579
+ if (car.BrakeSystems?.ContainsKey((BrakeModes.VP, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VP, car.MassKG);
4580
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.VB, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VB, car.MassKG);
4581
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.VU, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VU, car.MassKG);
4582
+ }
4583
+ }
4584
+ else
4585
+ {
4586
+ foreach (var car in Cars.Cast<MSTSWagon>())
4587
+ {
4588
+ if (car.BrakeSystems?.ContainsKey((BrakeModes.R_MG, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.R_MG, car.MassKG);
4589
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.R, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.R, car.MassKG);
4590
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.P, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.P, car.MassKG);
4591
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.AP, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.AP, car.MassKG);
4592
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.G, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.G, car.MassKG);
4593
+ else if (car.BrakeSystems?.ContainsKey((BrakeModes.AG, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.AG, car.MassKG);
4594
+ }
4595
+ }
4596
+ }
4597
+
4564
4598
public void CalculatePositionOfCars()
4565
4599
{
4566
4600
CalculatePositionOfCars(0, 0);
0 commit comments