Skip to content

Commit c8bc508

Browse files
committed
Automatic merge of T1.5.1-1689-g72674c98d and 14 pull requests
- Pull request #900 at 4629736: DMI in 3D cab + two more dials - Pull request #1030 at d3ae4a2: Refactor settings, in prep for settings exporter - Pull request #1045 at cc4d53c: Bugfix: Empty Start Time for Explore, and other issues loading from Menu Selection and Content Routes - Pull request #1052 at 5bbc476: Content Manager: Add axle count, and lowest derail force - Pull request #1062 at 3b18c48: Train Forces popup Window. - Pull request #1064 at 9b3415e: Add Train Info tab to Help window (F1) - Pull request #1066 at 62c89c1: Log derailment, using TraceInformation. - Pull request #892 at 1f5ba4c: Signal Function OPP_SIG_ID_TRAINPATH - Pull request #1000 at d8d9709: Locomotive operation from control car - Pull request #1029 at 92c74ef: Superelevation Follow Up Fixes - Pull request #1057 at d9791e2: Switchable brake system - Pull request #1065 at 409064d: Fix for PantographToggle sound event - Pull request #1068 at d6e1f83: Build for online-only documentation files - Pull request #896 at f1681df: First implementation of https://blueprints.launchpad.net/or/+spec/specific-sounds-for-ai-trains
16 parents 0cd2224 + 72674c9 + 4629736 + d3ae4a2 + cc4d53c + 5bbc476 + 3b18c48 + 9b3415e + 62c89c1 + 1f5ba4c + d8d9709 + 92c74ef + d9791e2 + 409064d + d6e1f83 + f1681df commit c8bc508

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

Source/Orts.Simulation/Simulation/AIs/AITrain.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3990,6 +3990,7 @@ public override void InitializeBrakes()
39903990
base.InitializeBrakes();
39913991
return;
39923992
}
3993+
SetInitialBrakeModes();
39933994
float maxPressurePSI = 90;
39943995
float fullServPressurePSI = 64;
39953996
float maxPressurePSIVacuum = 21;

Source/Orts.Simulation/Simulation/Physics/Train.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4078,6 +4078,8 @@ public void UnconditionalInitializeBrakes()
40784078
if (Simulator.Confirmer != null && IsActualPlayerTrain) // As Confirmer may not be created until after a restore.
40794079
Simulator.Confirmer.Confirm(CabControl.InitializeBrakes, CabSetting.Off);
40804080

4081+
SetInitialBrakeModes();
4082+
40814083
float maxPressurePSI = 90;
40824084
float fullServPressurePSI = 64;
40834085
if (FirstCar != null && FirstCar.BrakeSystem is VacuumSinglePipe)
@@ -4563,6 +4565,38 @@ public void CheckFreight()
45634565
if (TrainType == TRAINTYPE.AI_INCORPORATED && IncorporatingTrainNo > -1) IsPlayable = true;
45644566
} // CheckFreight
45654567

4568+
4569+
public void SetInitialBrakeModes()
4570+
{
4571+
var lead = LeadLocomotive ?? Cars?.FirstOrDefault();
4572+
if (lead == null) return;
4573+
4574+
// Check if lead is vacuum-braked
4575+
if (lead.BrakeSystem is VacuumSinglePipe || (lead.BrakeSystems?.Any(b => b.Value is VacuumSinglePipe) ?? false) &&
4576+
Cars.Count(c => c.BrakeSystem is VacuumSinglePipe || c.BrakeSystem is ManualBraking ||
4577+
(c.BrakeSystems?.Any(b => b.Value is VacuumSinglePipe || b.Value is ManualBraking) ?? false)) > Cars.Count / 3)
4578+
{
4579+
foreach (var car in Cars.Cast<MSTSWagon>())
4580+
{
4581+
if (car.BrakeSystems?.ContainsKey((BrakeModes.VP, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VP, car.MassKG);
4582+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.VB, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VB, car.MassKG);
4583+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.VU, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.VU, car.MassKG);
4584+
}
4585+
}
4586+
else
4587+
{
4588+
foreach (var car in Cars.Cast<MSTSWagon>())
4589+
{
4590+
if (car.BrakeSystems?.ContainsKey((BrakeModes.R_MG, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.R_MG, car.MassKG);
4591+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.R, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.R, car.MassKG);
4592+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.P, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.P, car.MassKG);
4593+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.AP, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.AP, car.MassKG);
4594+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.G, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.G, car.MassKG);
4595+
else if (car.BrakeSystems?.ContainsKey((BrakeModes.AG, 0)) ?? false) car.SetBrakeSystemMode(BrakeModes.AG, car.MassKG);
4596+
}
4597+
}
4598+
}
4599+
45664600
public void CalculatePositionOfCars()
45674601
{
45684602
CalculatePositionOfCars(0, 0);

Source/Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3280,7 +3280,7 @@ private void UpdateTenderLoad()
32803280

32813281
private void UpdateBrakeLoadCompensation(float massDiffRatio)
32823282
{
3283-
// The LoadFull... and LoadEmpty... variables are set by the SetBrakeSystem() method based on the actually active brake mode.
3283+
// The LoadFull... and LoadEmpty... variables are set by the SetBrakeSystemMode() method based on the actually active brake mode.
32843284
// The massDiffRatio is always 1 for manually switchable load stages, even for an empty wagon.
32853285
// Only wagons with automatic continuous load compensation can have a massDiffRatio below 1.
32863286
MaxBrakeForceN = ((LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN) * massDiffRatio) + LoadEmptyMaxBrakeForceN;

0 commit comments

Comments
 (0)