Skip to content

Commit 29a0d37

Browse files
committed
HUD changes
1 parent d6bd4e3 commit 29a0d37

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ public virtual void LoadFromWagFile(string wagFilePath)
682682
}
683683
}
684684

685+
// Calling SetBrakeSystemMode() is also a prerequisite for initializing the freightanim-style load compensation, by setting the default values for the Load... variables
685686
var (brakeMode, maxMass) = BrakeSystems?.Count > 0 ? BrakeSystems.Keys.FirstOrDefault() : default;
686687
SetBrakeSystemMode(brakeMode, maxMass, forceSwitch: true);
687688

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,6 @@ public override string[] GetDebugStatus(Dictionary<BrakeSystemComponent, Pressur
409409
FrontBrakeHoseConnected ? "I" : "T",
410410
string.Format("A{0} B{1}", AngleCockAOpenAmount >= 1 ? "+" : AngleCockAOpenAmount <= 0 ? "-" : "/", AngleCockBOpenAmount >= 1 ? "+" : AngleCockBOpenAmount <= 0 ? "-" : "/"),
411411
BleedOffValveOpen ? Simulator.Catalog.GetString("Open") : string.Empty,
412-
string.Format("{0}t-{1}%", (int)Kg.ToTonne(BrakeMass), GetBrakePercent()),
413412
};
414413
}
415414

@@ -2602,12 +2601,12 @@ public void BrakeMassToShoeForce(float? brakeMassWithoutAccelerator)
26022601
return;
26032602
}
26042603

2605-
var referenceSpeed = 120; // km/h
2606-
var referenceMass = Kg.ToTonne(Math.Max(Car.InitialMassKG, LoadStageMinMassKg));
2604+
var referenceMass = Kg.ToTonne(LoadStageMinMassKg > 0 ? LoadStageMinMassKg : Car.InitialMassKG);
26072605
if (referenceMass == 0)
26082606
referenceMass = 50;
26092607

26102608
// Approximation of the UIC curves by Darwin Smith:
2609+
var referenceSpeed = 120; // km/h
26112610
float a = 0, b = 0, c = 0, d = 0;
26122611
switch (BrakeMode)
26132612
{
@@ -2651,17 +2650,13 @@ public void BrakeMassToShoeForce(float? brakeMassWithoutAccelerator)
26512650
}
26522651
else
26532652
{
2653+
// If we don't have the brake mass then try to calculate back from the brake force, using the same formula as above
26542654
var force = MaxBrakeShoeForceN > 0 ? MaxBrakeShoeForceN : InitialMaxBrakeForceN;
26552655
var brakePercentage = MathHelper.Clamp((force / referenceMass / 10 + d - c * referenceSpeed) / (a - b * referenceSpeed), 0, 250);
26562656
BrakeMass = Kg.FromTonne(referenceMass) * brakePercentage / 100;
26572657
if (modeIsAccelerated)
26582658
BrakeMass /= 0.7f;
26592659
}
26602660
}
2661-
2662-
public float GetBrakePercent()
2663-
{
2664-
return (int)MathHelper.Clamp(BrakeMass / Car.MassKG * 100, 0, 250);
2665-
}
26662661
}
26672662
}

Source/RunActivity/Viewer3D/Popups/HUDWindow.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -533,11 +533,16 @@ void TextPageConsistInfo(TableData table)
533533
var mstsLocomotive = locomotive as MSTSLocomotive;
534534
var train = locomotive.Train;
535535
float tonnage = 0f;
536+
var brakeMass = 0f;
537+
var totalMass = 0f;
536538
foreach (var car in train.Cars)
537539
{
538-
if(car.WagonType == TrainCar.WagonTypes.Freight || car.WagonType == TrainCar.WagonTypes.Passenger)
540+
if (car.WagonType == TrainCar.WagonTypes.Freight || car.WagonType == TrainCar.WagonTypes.Passenger)
539541
tonnage += car.MassKG;
542+
totalMass += car.MassKG;
543+
brakeMass += (car.BrakeSystem as AirSinglePipe)?.BrakeMass ?? 0;
540544
}
545+
var brakePercentage = (int)(brakeMass / totalMass * 100);
541546
TableSetCells(table, 0,
542547
Viewer.Catalog.GetString("Player"),
543548
Viewer.Catalog.GetString("Tilted"),
@@ -547,7 +552,8 @@ void TextPageConsistInfo(TableData table)
547552
Viewer.Catalog.GetString("Tonnage"), "",
548553
Viewer.Catalog.GetString("Control Mode"), "",
549554
Viewer.Catalog.GetString("Out of Control"), "",
550-
Viewer.Catalog.GetString("Cab Aspect"));
555+
Viewer.Catalog.GetString("Cab Aspect"), "",
556+
Viewer.Catalog.GetString("Brake %"));
551557
TableAddLine(table);
552558
TableSetCells(table, 0, locomotive.CarID + " " + (mstsLocomotive == null ? "" : mstsLocomotive.UsingRearCab ? Viewer.Catalog.GetParticularString("Cab", "R") : Viewer.Catalog.GetParticularString("Cab", "F")),
553559
train.IsTilting ? Viewer.Catalog.GetString("Yes") : Viewer.Catalog.GetString("No"),
@@ -557,7 +563,8 @@ void TextPageConsistInfo(TableData table)
557563
FormatStrings.FormatLargeMass(tonnage, locomotive.IsMetric, locomotive.IsUK), "",
558564
train.ControlMode.ToString(), "",
559565
train.OutOfControlReason.ToString(), "",
560-
mstsLocomotive.TrainControlSystem.CabSignalAspect.ToString());
566+
mstsLocomotive.TrainControlSystem.CabSignalAspect.ToString(), "",
567+
string.Format("{0:F0}%", brakePercentage));
561568
TableAddLine(table);
562569
TableAddLine(table);
563570
TableSetCells(table, 0,
@@ -568,7 +575,8 @@ void TextPageConsistInfo(TableData table)
568575
Viewer.Catalog.GetString("Weight"),
569576
Viewer.Catalog.GetString("Drv/Cabs"),
570577
Viewer.Catalog.GetString("Wheels"),
571-
Viewer.Catalog.GetString("Temp"));
578+
Viewer.Catalog.GetString("Temp"),
579+
Viewer.Catalog.GetString("BrkMass"));
572580
TableAddLine(table);
573581
foreach (var car in train.Cars.Take(20))
574582
{
@@ -579,7 +587,8 @@ void TextPageConsistInfo(TableData table)
579587
FormatStrings.FormatLargeMass(car.MassKG, locomotive.IsMetric, locomotive.IsUK),
580588
(car.IsDriveable ? Viewer.Catalog.GetParticularString("Cab", "D") : "") + (car.HasFrontCab || car.HasFront3DCab ? Viewer.Catalog.GetParticularString("Cab", "F") : "") + (car.HasRearCab || car.HasRear3DCab ? Viewer.Catalog.GetParticularString("Cab", "R") : ""),
581589
GetCarWhyteLikeNotation(car),
582-
car.WagonType == TrainCar.WagonTypes.Passenger || car.WagonSpecialType == TrainCar.WagonSpecialTypes.Heated ? FormatStrings.FormatTemperature(car.CarInsideTempC, locomotive.IsMetric, false) : string.Empty);
590+
car.WagonType == TrainCar.WagonTypes.Passenger || car.WagonSpecialType == TrainCar.WagonSpecialTypes.Heated ? FormatStrings.FormatTemperature(car.CarInsideTempC, locomotive.IsMetric, false) : string.Empty,
591+
((int)Kg.ToTonne((car.BrakeSystem as AirSinglePipe)?.BrakeMass ?? 0)).ToString() + " " + FormatStrings.t);
583592
TableAddLine(table);
584593
}
585594
}
@@ -1125,8 +1134,7 @@ void TextPageBrakeInfo(TableData table)
11251134
Viewer.Catalog.GetString("Handbrk"),
11261135
Viewer.Catalog.GetString("Conn"),
11271136
Viewer.Catalog.GetString("AnglCock"),
1128-
Viewer.Catalog.GetString("BleedOff"),
1129-
Viewer.Catalog.GetString("BrkM-%"));
1137+
Viewer.Catalog.GetString("BleedOff"));
11301138
TableAddLine(table);
11311139

11321140
var n = train.Cars.Count; // Number of lines to show

0 commit comments

Comments
 (0)