Skip to content

Commit 3b5cb90

Browse files
committed
Make changes discussed in PR.
Add continuous tractive effort, and use it in tons-per calculations. Other minor changes.
1 parent 79cd5f8 commit 3b5cb90

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

Source/Contrib/ContentManager/ContentInfo.cs

+14-10
Original file line numberDiff line numberDiff line change
@@ -189,19 +189,21 @@ public static string GetText(Content content)
189189
details.AppendFormat("NumEngines:\t{1}{0}", Environment.NewLine, data.NumEngines);
190190
details.AppendFormat("NumCars:\t{1}{0}", Environment.NewLine, data.NumCars);
191191
details.AppendFormat("Axles:\t{1}{0}", Environment.NewLine, data.NumAxles);
192-
details.AppendFormat("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric));
193-
details.AppendFormat("Weight:\t{1}{0}", Environment.NewLine, FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK));
192+
details.AppendFormat("Weight:\t{1} (trailing: {2}){0}", Environment.NewLine, FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK),
193+
FormatStrings.FormatLargeMass(data.TrailingMassKG, IsMetric, IsUK));
194194
details.AppendFormat("Length:\t{1}{0}", Environment.NewLine, FormatStrings.FormatShortDistanceDisplay(data.LengthM, IsMetric));
195-
details.AppendFormat("Power:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
195+
details.AppendFormat("MaxPower:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
196196
details.AppendFormat("MaxTE:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxTractiveForceN, IsMetric));
197+
details.AppendFormat("MaxContTE:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxContinuousTractiveForceN, IsMetric));
197198
details.AppendFormat("MaxDynBrk:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxDynamicBrakeForceN, IsMetric));
198199
if (!IsMetric && !IsUK)
199200
{
200-
details.AppendFormat("HPT:\t{1}{0}", Environment.NewLine, FormatHPT(data.MaxPowerW, data.MassKG));
201+
details.AppendFormat("HPT:\t{1}{0}", Environment.NewLine, FormatHPT(data.MaxPowerW, data.TrailingMassKG));
201202
details.AppendFormat("TpOB:\t{1}{0}", Environment.NewLine, FormatTPOB(data.TrailingMassKG, data.NumOperativeBrakes));
202-
details.AppendFormat("TpEPA:\t{1}{0}", Environment.NewLine, FormatTonsPerEPA(data.MassKG, data.MaxTractiveForceN));
203-
details.AppendFormat("TpEDBA:\t{1}{0}", Environment.NewLine, FormatTonsPerEDBA(data.MassKG, data.MaxDynamicBrakeForceN));
203+
details.AppendFormat("TpEPA:\t{1}{0}", Environment.NewLine, FormatTonsPerEPA(data.TrailingMassKG, data.MaxContinuousTractiveForceN));
204+
details.AppendFormat("TpEDBA:\t{1}{0}", Environment.NewLine, FormatTonsPerEDBA(data.TrailingMassKG, data.MaxDynamicBrakeForceN));
204205
}
206+
details.AppendFormat("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric));
205207
details.AppendFormat("MinCouplerStrength:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MinCouplerStrengthN, IsMetric));
206208
details.AppendFormat("MinDerailForce:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MinDerailForceN, IsMetric));
207209
details.AppendLine();
@@ -216,7 +218,7 @@ public static string GetText(Content content)
216218
details.AppendFormat("Type:\t{1}{0}", Environment.NewLine, data.Type);
217219
details.AppendFormat("SubType:\t{1}{0}", Environment.NewLine, data.SubType);
218220
details.AppendFormat("Name:\t{1}{0}", Environment.NewLine, data.Name);
219-
details.AppendFormat("Weight:\t{1} ({2}){0}", Environment.NewLine, FormatStrings.FormatMass(data.MassKG, IsMetric), FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK));
221+
details.AppendFormat("Weight:\t{1} ({2}){0}", Environment.NewLine, FormatStrings.FormatMass(data.MassKG, IsMetric), FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK));
220222
details.AppendFormat("Length:\t{1}{0}", Environment.NewLine, FormatStrings.FormatShortDistanceDisplay(data.LengthM, IsMetric));
221223
if (data.Type != CarType.Engine)
222224
{
@@ -225,11 +227,13 @@ public static string GetText(Content content)
225227
else
226228
{
227229
details.AppendFormat("Axles:\t{1}+{2}{0}", Environment.NewLine, data.NumDriveAxles, data.NumAllAxles - data.NumDriveAxles);
228-
details.AppendFormat("MaxPowerW:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
229-
details.AppendFormat("MaxForce:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxForceN, IsMetric));
230-
details.AppendFormat("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric));
230+
details.AppendFormat("MaxPower:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
231+
details.AppendFormat("MaxTE:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxForceN, IsMetric));
232+
details.AppendFormat("MaxContTE:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxContinuousForceN, IsMetric));
233+
details.AppendFormat("MaxDynBrk:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxDynamicBrakeForceN, IsMetric));
231234
}
232235
details.AppendFormat("MaxBrakeF:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxBrakeForceN, IsMetric));
236+
if (data.MaxSpeedMps > 0f) { details.AppendFormat("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric)); }
233237
details.AppendFormat("MinCouplerStrength:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MinCouplerStrengthN, IsMetric));
234238
details.AppendFormat("MinDerailForce:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MinDerailForceN, IsMetric));
235239
details.AppendLine();

Source/Contrib/ContentManager/Models/Car.cs

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public class Car
4848
public readonly float MaxBrakeForceN;
4949
public readonly float MaxPowerW;
5050
public readonly float MaxForceN;
51+
public readonly float MaxContinuousForceN;
52+
public readonly float MaxDynamicBrakeForceN;
5153
public readonly float MaxSpeedMps;
5254
public readonly float MinCouplerStrengthN;
5355
public readonly float MinDerailForceN;
@@ -76,6 +78,8 @@ public Car(Content content)
7678
Name = engFile.Name;
7779
MaxPowerW = engFile.MaxPowerW;
7880
MaxForceN = engFile.MaxForceN;
81+
MaxContinuousForceN = engFile.MaxContinuousForceN;
82+
MaxDynamicBrakeForceN = engFile.MaxDynamicBrakeForceN;
7983
MaxSpeedMps = engFile.MaxSpeedMps;
8084
Description = engFile.Description;
8185

Source/Contrib/ContentManager/Models/Consist.cs

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class Consist
3535
public readonly float TrailingMassKG = 0F;
3636
public readonly float MaxPowerW = 0F;
3737
public readonly float MaxTractiveForceN = 0F;
38+
public readonly float MaxContinuousTractiveForceN = 0F;
3839
public readonly float MaxDynamicBrakeForceN = 0F;
3940
public readonly float MaxBrakeForce = 0F;
4041
public readonly int NumOperativeBrakes = 0;
@@ -93,6 +94,7 @@ public Consist(Content content)
9394
EngCount++;
9495
MaxPowerW += engFile.MaxPowerW;
9596
MaxTractiveForceN += engFile.MaxForceN;
97+
MaxContinuousTractiveForceN += engFile.MaxContinuousForceN > 0f ? engFile.MaxContinuousForceN : engFile.MaxForceN;
9698
MaxDynamicBrakeForceN += engFile.MaxDynamicBrakeForceN;
9799
}
98100
else { WagCount++; }

Source/Orts.Formats.Msts/EngineFile.cs

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class EngineFile
3131
public string EngineType;
3232
public float MaxPowerW;
3333
public float MaxForceN;
34+
public float MaxContinuousForceN;
3435
public float MaxDynamicBrakeForceN;
3536
public float MaxSpeedMps;
3637
public int NumDriveAxles; // ORTS
@@ -51,6 +52,7 @@ public EngineFile(string filePath)
5152
new STFReader.TokenProcessor("type", ()=>{ EngineType = stf.ReadStringBlock(null); }),
5253
new STFReader.TokenProcessor("maxpower", ()=>{ MaxPowerW = stf.ReadFloatBlock( STFReader.UNITS.Power, null); }),
5354
new STFReader.TokenProcessor("maxforce", ()=>{ MaxForceN = stf.ReadFloatBlock( STFReader.UNITS.Force, null); }),
55+
new STFReader.TokenProcessor("maxcontinuousforce", ()=>{ MaxContinuousForceN = stf.ReadFloatBlock( STFReader.UNITS.Force, null); }),
5456
new STFReader.TokenProcessor("dynamicbrakesmaximumforce", ()=>{ MaxDynamicBrakeForceN = stf.ReadFloatBlock( STFReader.UNITS.Force, null); }),
5557
new STFReader.TokenProcessor("maxvelocity", ()=>{ MaxSpeedMps = stf.ReadFloatBlock( STFReader.UNITS.Speed, null); }),
5658
new STFReader.TokenProcessor("ortsnumberdriveaxles", ()=>{ NumDriveAxles = stf.ReadIntBlock(null); }),

0 commit comments

Comments
 (0)