Skip to content

Commit 42c5ba3

Browse files
committed
Add weight bar to the car list of a consist.
1 parent ae626ec commit 42c5ba3

File tree

5 files changed

+48
-15
lines changed

5 files changed

+48
-15
lines changed

Source/Contrib/ContentManager/ContentInfo.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ namespace ORTS.ContentManager
3333
{
3434
public static class ContentInfo
3535
{
36-
// fixed for now; need to read from user settings (see Wagon.cs)
36+
// will be set from ConntentManagerGUI constructor
3737
public static bool IsMetric = false;
38-
public static bool IsUk = false;
39-
public static bool isImperialBHP = false;
40-
public static bool isImperialBTUpS = false;
38+
public static bool IsUK = false;
39+
public static bool IsImperialBHP = false; // using default; seems only used for steam locos
40+
public static bool IsImperialBTUpS = false; // using default; seems only be used for steam locos
4141

4242
public static string GetText(Content content)
4343
{
@@ -189,28 +189,29 @@ 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("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric));
192-
details.AppendFormat("Weight:\t{1}{0}", Environment.NewLine, FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUk));
192+
details.AppendFormat("Weight:\t{1}{0}", Environment.NewLine, FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK));
193193
details.AppendFormat("Length:\t{1}{0}", Environment.NewLine, FormatStrings.FormatShortDistanceDisplay(data.LengthM, IsMetric));
194-
details.AppendFormat("Power:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, isImperialBHP, isImperialBTUpS));
194+
details.AppendFormat("Power:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
195195
details.AppendFormat("MaxTE:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxTractiveForceN, IsMetric));
196-
if (!IsMetric && !IsUk) details.AppendFormat("HPT:\t{1}{0}", Environment.NewLine, FormatStrings.FormatHPT(data.MaxPowerW, data.MassKG));
197-
if (!IsMetric && !IsUk) details.AppendFormat("TPOB:\t{1}{0}", Environment.NewLine, FormatStrings.FormatTPOB(data.MassKG, data.NumOperativeBrakes));
196+
if (!IsMetric && !IsUK) details.AppendFormat("HPT:\t{1}{0}", Environment.NewLine, FormatStrings.FormatHPT(data.MaxPowerW, data.MassKG));
197+
if (!IsMetric && !IsUK) details.AppendFormat("TPOB:\t{1}{0}", Environment.NewLine, FormatStrings.FormatTPOB(data.MassKG, data.NumOperativeBrakes));
198198
details.AppendLine();
199-
details.AppendFormat("Car ID:\tDirection:\tName:\t{0}", Environment.NewLine);
199+
details.AppendFormat("Car ID:\tDirection:\tWeight:\tName:\t{0}", Environment.NewLine);
200200
foreach (var car in data.Cars)
201-
details.AppendFormat("{1}\t{2}\t\u0001{3}\u0002Car\u0001{0}", Environment.NewLine, car.ID, car.Direction, car.Name);
201+
details.AppendFormat("{1}\t{2}\t{3}\t\u0001{4}\u0002Car\u0001{0}", Environment.NewLine, car.ID, car.Direction, car.IsEngine ? "Engine" : FormatStrings.FormatMassBar(car.MassKG), car.Name);
202202
details.AppendFormat("{0}", Environment.NewLine);
203203
}
204204
else if (content.Type == ContentType.Car)
205205
{
206206
var data = new Car(content);
207207
details.AppendFormat("Type:\t{1}{0}", Environment.NewLine, data.Type);
208+
details.AppendFormat("SubType:\t{1}{0}", Environment.NewLine, data.SubType);
208209
details.AppendFormat("Name:\t{1}{0}", Environment.NewLine, data.Name);
209-
details.AppendFormat("Weight:\t{1} ({2}){0}", Environment.NewLine, FormatStrings.FormatMass(data.MassKG, IsMetric), FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUk));
210+
details.AppendFormat("Weight:\t{1} ({2}){0}", Environment.NewLine, FormatStrings.FormatMass(data.MassKG, IsMetric), FormatStrings.FormatLargeMass(data.MassKG, IsMetric, IsUK));
210211
details.AppendFormat("Length:\t{1}{0}", Environment.NewLine, FormatStrings.FormatShortDistanceDisplay(data.LengthM, IsMetric));
211212
if (data.Type == CarType.Engine)
212213
{
213-
details.AppendFormat("MaxPowerW:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, isImperialBHP, isImperialBTUpS));
214+
details.AppendFormat("MaxPowerW:\t{1}{0}", Environment.NewLine, FormatStrings.FormatPower(data.MaxPowerW, IsMetric, IsImperialBHP, IsImperialBTUpS));
214215
details.AppendFormat("MaxForce:\t{1}{0}", Environment.NewLine, FormatStrings.FormatForce(data.MaxForceN, IsMetric));
215216
details.AppendFormat("MaxSpeed:\t{1}{0}", Environment.NewLine, FormatStrings.FormatSpeedLimit(data.MaxSpeedMps, IsMetric));
216217
}

Source/Contrib/ContentManager/ContentManagerGUI.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ public ContentManagerGUI()
7575
Settings = new UserSettings(new string[0]);
7676
ContentManager = new ContentManager(Settings.Folders);
7777

78+
// add unit settings to ContentInfo static class; only considering explict setting or system setting
79+
ContentInfo.IsMetric = Settings.Units == "Metric" || (Settings.Units == "Automatic" && System.Globalization.RegionInfo.CurrentRegion.IsMetric) || (Settings.Units == "Route" && System.Globalization.RegionInfo.CurrentRegion.IsMetric);
80+
ContentInfo.IsUK = Settings.Units == "UK";
81+
82+
7883
// Start off the tree with the Content Manager itself at the root and expand to show packages.
7984
treeViewContent.Nodes.Add(CreateContentNode(ContentManager));
8085
treeViewContent.Nodes[0].Expand();

Source/Contrib/ContentManager/Models/Car.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public enum CarType
3333
public class Car
3434
{
3535
public readonly CarType Type;
36+
public readonly string SubType;
3637
public readonly string Name;
3738
public readonly string Description;
3839
public readonly float MassKG;
@@ -49,6 +50,7 @@ public Car(Content content)
4950
// .eng files also have a wagon block
5051
var wagFile = new WagonFile(content.PathName);
5152
Type = CarType.Wagon;
53+
SubType = wagFile.WagonType;
5254
Name = wagFile.Name;
5355
MassKG = wagFile.MassKG;
5456
LengthM = wagFile.LengthM;
@@ -58,6 +60,7 @@ public Car(Content content)
5860
{
5961
var engFile = new EngineFile(content.PathName);
6062
Type = CarType.Engine;
63+
SubType = engFile.EngineType;
6164
Name = engFile.Name;
6265
MaxPowerW = engFile.MaxPowerW;
6366
MaxForceN = engFile.MaxForceN;

Source/Contrib/ContentManager/Models/Consist.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ public Consist(Content content)
5959
var CarList = new List<Car>();
6060
foreach (Wagon wag in file.Train.TrainCfg.WagonList)
6161
{
62-
CarList.Add(new Car(wag));
63-
62+
float wagonMassKG = 0;
6463
try
6564
{
6665
var fileType = wag.IsEngine ? ".eng" : ".wag";
@@ -70,6 +69,7 @@ public Consist(Content content)
7069

7170
LengthM += wagonFile.LengthM;
7271
MassKG += wagonFile.MassKG;
72+
wagonMassKG = wagonFile.MassKG;
7373
MaxBrakeForce += wagonFile.MaxBrakeForceN;
7474
if (wagonFile.MaxBrakeForceN > 0) NumOperativeBrakes++;
7575

@@ -95,6 +95,7 @@ public Consist(Content content)
9595
EngCount = 0; Separator = "+";
9696
}
9797

98+
CarList.Add(new Car(wag, wagonMassKG));
9899
}
99100
if (EngCount > 0) { NumEngines = NumEngines + Separator + EngCount.ToString(); }
100101
if (NumEngines == null) { NumEngines = "0"; }
@@ -113,12 +114,16 @@ public class Car
113114
public readonly string ID;
114115
public readonly string Name;
115116
public readonly Direction Direction;
117+
public readonly bool IsEngine;
118+
public readonly float MassKG;
116119

117-
internal Car(Wagon car)
120+
internal Car(Wagon car, float massKg)
118121
{
119122
ID = car.UiD.ToString();
120123
Name = car.Folder + "/" + car.Name;
121124
Direction = car.Flip ? Consist.Direction.Backwards : Consist.Direction.Forwards;
125+
IsEngine = car.IsEngine;
126+
MassKG = massKg;
122127
}
123128
}
124129
}

Source/ORTS.Common/Conversions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,25 @@ public static string FormatLargeMass(float massKg, bool isMetric, bool isUK)
720720
return FormatMass(massKg, isMetric);
721721
}
722722

723+
public static string FormatMassBar( float massKg)
724+
{
725+
string massBar;
726+
var range = (int) Math.Ceiling(massKg / 20000);
727+
switch (range)
728+
{
729+
case 1: massBar = "*"; break;
730+
case 2: massBar = "**"; break;
731+
case 3: massBar = "***"; break;
732+
case 4: massBar = "****"; break;
733+
case 5: massBar = "*****"; break;
734+
case 6: massBar = "******"; break;
735+
case 7: massBar = "*******"; break;
736+
case 8: massBar = "********"; break;
737+
default: massBar = massKg < 1.0 ? "?" : "********>"; break;
738+
}
739+
return massBar;
740+
}
741+
723742
public static string FormatArea(float areaM2, bool isMetric)
724743
{
725744
var area = isMetric ? areaM2 : Me2.ToFt2(areaM2);

0 commit comments

Comments
 (0)