Skip to content

Commit b3f83ed

Browse files
committed
Added Angle Cock partially opened.
1 parent 537db1a commit b3f83ed

File tree

7 files changed

+94
-12
lines changed

7 files changed

+94
-12
lines changed
176 Bytes
Loading
837 Bytes
Loading

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsViewerWindow.cs

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class TrainCarOperationsViewerWindow : Window
5858
internal static Texture2D ETSdisconnected32;
5959
internal static Texture2D FrontAngleCockOpened;
6060
internal static Texture2D FrontAngleCockClosed;
61+
internal static Texture2D FrontAngleCockPartial;
6162
internal static Texture2D HandBrakeSet;
6263
internal static Texture2D HandBrakeNotSet;
6364
internal static Texture2D HandBrakeNotAvailable;
@@ -71,9 +72,12 @@ public class TrainCarOperationsViewerWindow : Window
7172
internal static Texture2D PowerChanging;
7273
internal static Texture2D RearAngleCockOpened;
7374
internal static Texture2D RearAngleCockClosed;
75+
internal static Texture2D RearAngleCockPartial;
7476
internal static Texture2D ResetBrakesOff;
7577
internal static Texture2D ResetBrakesOn;
7678

79+
public List<bool> AngleCockAPartiallyOpened = new List<bool>();
80+
public List<bool> AngleCockBPartiallyOpened = new List<bool>();
7781
public string BatteryStatus;
7882
string CircuitBreakerState;
7983
public int LocoRowCount;
@@ -218,6 +222,8 @@ protected internal override void Initialize()
218222
Rectangle RearAngleCockClosedRect = new Rectangle(32, 224, 32, 32);
219223
Rectangle FrontAngleCockOpenedRect = new Rectangle(64, 224, 32, 32);
220224
Rectangle RearAngleCockOpenedRect = new Rectangle(96, 224, 32, 32);
225+
Rectangle FrontAngleCockPartialRect = new Rectangle(96, 160, 32, 32);
226+
Rectangle RearAngleCockPartialRect = new Rectangle(96, 288, 32, 32);
221227

222228
Rectangle PowerOnRect = new Rectangle(0, 288, 32, 32);
223229
Rectangle PowerOffRect = new Rectangle(32, 288, 32, 32);
@@ -252,6 +258,7 @@ protected internal override void Initialize()
252258

253259
FrontAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockClosedRect);
254260
FrontAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockOpenedRect);
261+
FrontAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockPartialRect);
255262

256263
HandBrakeNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, HandBrakeNotAvailableRect);
257264
HandBrakeNotSet = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, HandBrakeNotSetRect);
@@ -269,6 +276,7 @@ protected internal override void Initialize()
269276

270277
RearAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockClosedRect);
271278
RearAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockOpenedRect);
279+
RearAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockPartialRect);
272280

273281
ResetBrakesOff = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, ResetBrakesOffRect);
274282
ResetBrakesOn = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, ResetBrakesOnRect);
@@ -321,6 +329,11 @@ protected override ControlLayout Layout(ControlLayout layout)
321329
MSTSLocomotive locomotive = trainCar as MSTSLocomotive;
322330
MSTSWagon wagon = trainCar as MSTSWagon;
323331

332+
// reset AngleCockAPartiallyOpened
333+
AngleCockAPartiallyOpened = Enumerable.Repeat(false, PlayerTrain.Cars.Count).ToList();
334+
// reset AngleCockBPartiallyOpened
335+
AngleCockBPartiallyOpened = Enumerable.Repeat(false, PlayerTrain.Cars.Count).ToList();
336+
324337
bool isElectricDieselLocomotive = (trainCar is MSTSElectricLocomotive) || (trainCar is MSTSDieselLocomotive);
325338

326339
{
@@ -482,6 +495,30 @@ public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
482495
UpdateWindowSize();
483496
TrainCarOperationsChanged = true;
484497
}
498+
499+
for (var position = 0 ; position < Owner.Viewer.PlayerTrain.Cars.Count; position++)
500+
{
501+
if (trainCarOperations.WarningCarPosition[position])
502+
{
503+
var carAngleCockAOpenAmount = Owner.Viewer.PlayerTrain.Cars[position].BrakeSystem.AngleCockAOpenAmount;
504+
var carAngleCockBOpenAmount = Owner.Viewer.PlayerTrain.Cars[position].BrakeSystem.AngleCockBOpenAmount;
505+
if (carAngleCockAOpenAmount >= 1 && AngleCockAPartiallyOpened[position])
506+
{
507+
AngleCockAPartiallyOpened[position] = false;
508+
Layout();
509+
TrainCarOperationsChanged = true;
510+
}
511+
if (carAngleCockBOpenAmount >= 1 && AngleCockBPartiallyOpened[position])
512+
{
513+
AngleCockBPartiallyOpened[position] = false;
514+
Layout();
515+
TrainCarOperationsChanged = true;
516+
}
517+
AngleCockAPartiallyOpened[position] = carAngleCockAOpenAmount < 1 && carAngleCockAOpenAmount > 0;
518+
AngleCockBPartiallyOpened[position] = carAngleCockBOpenAmount < 1 && carAngleCockBOpenAmount > 0;
519+
}
520+
}
521+
485522
//required by traincarwindow to ModifyWindowSize()
486523
windowHeight = Vbox != null ? Vbox.Position.Height : 0;
487524
}
@@ -778,15 +815,20 @@ class buttonFrontAngleCock : Image
778815
readonly TrainCarOperationsViewerWindow TrainCarViewer;
779816
readonly int CarPosition;
780817
readonly bool First;
781-
818+
readonly float carAngleCockAOpenAmount;
782819
public buttonFrontAngleCock(int x, int y, int size, Viewer viewer, TrainCar car, int carPosition)
783820
: base(x, y, size, size)
784821
{
785822
Viewer = viewer;
786823
TrainCarViewer = Viewer.TrainCarOperationsViewerWindow;
787824
CarPosition = carPosition;
788825
First = car == Viewer.PlayerTrain.Cars.First();
789-
Texture = First ? FrontAngleCockClosed : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockAOpen ? FrontAngleCockOpened : FrontAngleCockClosed;
826+
var carAngleCockAOpenAmount = Viewer.PlayerTrain.Cars[CarPosition].BrakeSystem.AngleCockAOpenAmount;
827+
828+
Texture = First ? FrontAngleCockClosed
829+
: carAngleCockAOpenAmount >= 1 ? FrontAngleCockOpened
830+
: carAngleCockAOpenAmount <= 0 ? FrontAngleCockClosed
831+
: FrontAngleCockPartial;
790832
Source = new Rectangle(0, 0, size, size);
791833
Click += new Action<Control, Point>(buttonFrontAngleCock_Click);
792834
}
@@ -796,7 +838,9 @@ void buttonFrontAngleCock_Click(Control arg1, Point arg2)
796838
if (First) return;
797839

798840
new ToggleAngleCockACommand(Viewer.Log, (Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon), !(Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockAOpen);
799-
if ((Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockAOpen)
841+
var carAngleCockAOpenAmount = Viewer.PlayerTrain.Cars[CarPosition].BrakeSystem.AngleCockAOpenAmount;
842+
843+
if ((Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockAOpen && carAngleCockAOpenAmount >= 1)
800844
{
801845
Viewer.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Front angle cock opened"));
802846
Texture = FrontAngleCockOpened;
@@ -815,16 +859,22 @@ class buttonRearAngleCock : Image
815859
readonly TrainCarOperationsViewerWindow TrainCarViewer;
816860
readonly int CarPosition;
817861
readonly bool Last;
818-
819862
public buttonRearAngleCock(int x, int y, int size, Viewer viewer, TrainCar car, int carPosition)
820863
: base(x, y, size, size)
821864
{
822865
Viewer = viewer;
823866
TrainCarViewer = Viewer.TrainCarOperationsViewerWindow;
824867
CarPosition = carPosition;
825868
Last = car == Viewer.PlayerTrain.Cars.Last();
826-
Texture = Last ? RearAngleCockClosed : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockBOpen ? RearAngleCockOpened : RearAngleCockClosed;
869+
var carAngleCockBOpenAmount = (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
870+
871+
Texture = Last ? RearAngleCockClosed
872+
: carAngleCockBOpenAmount >= 1 ? RearAngleCockOpened
873+
: carAngleCockBOpenAmount <= 0 ? RearAngleCockClosed
874+
: RearAngleCockPartial;
875+
827876
Source = new Rectangle(0, 0, size, size);
877+
828878
Click += new Action<Control, Point>(buttonRearAngleCock_Click);
829879
}
830880

@@ -833,7 +883,9 @@ void buttonRearAngleCock_Click(Control arg1, Point arg2)
833883
if (Last) return;
834884

835885
new ToggleAngleCockBCommand(Viewer.Log, (Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon), !(Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockBOpen);
836-
if ((Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockBOpen)
886+
var carAngleCockBOpenAmount = (Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
887+
888+
if ((Viewer.PlayerTrain.Cars[CarPosition] as MSTSWagon).BrakeSystem.AngleCockBOpen && carAngleCockBOpenAmount >= 1)
837889
{
838890
Viewer.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Rear angle cock opened"));
839891
Texture = RearAngleCockOpened;

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsWindow.cs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class TrainCarOperationsWindow : Window
6060
internal static Texture2D ETSdisconnected;
6161
internal static Texture2D FrontAngleCockClosed;
6262
internal static Texture2D FrontAngleCockOpened;
63+
internal static Texture2D FrontAngleCockPartial;
6364
internal static Texture2D HandBrakeNotAvailable;
6465
internal static Texture2D HandBrakeNotSet;
6566
internal static Texture2D HandBrakeSet;
@@ -70,7 +71,10 @@ public class TrainCarOperationsWindow : Window
7071
internal static Texture2D PowerOn;
7172
internal static Texture2D RearAngleCockClosed;
7273
internal static Texture2D RearAngleCockOpened;
74+
internal static Texture2D RearAngleCockPartial;
7375

76+
public bool AngleCockAPartiallyEnabled;
77+
public bool AngleCockBPartiallyEnabled;
7478
public bool AllSymbolsMode = true;
7579
public int DisplaySizeY;
7680
public bool LayoutUpdated;
@@ -219,6 +223,8 @@ protected internal override void Initialize()
219223
Rectangle RearAngleCockClosedRect = new Rectangle(16, 96, 16, 16);
220224
Rectangle FrontAngleCockOpenedRect = new Rectangle(32, 96, 16, 16);
221225
Rectangle RearAngleCockOpenedRect = new Rectangle(48, 96, 16, 16);
226+
Rectangle FrontAngleCockPartialRect = new Rectangle(0, 128, 16, 16);
227+
Rectangle RearAngleCockPartialRect = new Rectangle(16, 128, 16, 16);
222228

223229
Rectangle PowerOnRect = new Rectangle(0, 112, 16, 16);
224230
Rectangle PowerOffRect = new Rectangle(16, 112, 16, 16);
@@ -249,13 +255,15 @@ protected internal override void Initialize()
249255

250256
FrontAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockOpenedRect);
251257
FrontAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockClosedRect);
258+
FrontAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockPartialRect);
252259

253260
BleedOffValveClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BleedOffValveClosedRect);
254261
BleedOffValveOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BleedOffValveOpenedRect);
255262
BleedOffValveNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BleedOffValveNotAvailableRect);
256263

257264
RearAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockClosedRect);
258265
RearAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockOpenedRect);
266+
RearAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockPartialRect);
259267

260268
PowerChanging = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, PowerChangingRect);
261269
PowerOff = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, PowerOffRect);
@@ -576,7 +584,7 @@ public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
576584
localScrollLayout(SelectedCarPosition);
577585
}
578586

579-
UserCommand ? controlDiesel = GetPressedKey(UserCommand.ControlDieselHelper, UserCommand.ControlDieselPlayer, UserCommand.ControlInitializeBrakes);
587+
UserCommand? controlDiesel = GetPressedKey(UserCommand.ControlDieselHelper, UserCommand.ControlDieselPlayer, UserCommand.ControlInitializeBrakes);
580588
if (controlDiesel == UserCommand.ControlDieselHelper || controlDiesel == UserCommand.ControlDieselPlayer || controlDiesel == UserCommand.ControlInitializeBrakes)
581589
{
582590
Layout();
@@ -618,7 +626,7 @@ public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
618626
}
619627
}
620628
}
621-
if (trainCarViewer.TrainCarOperationsChanged || trainCarViewer.TrainCarOperationsChanged || trainCarViewer.RearBrakeHoseChanged
629+
if (trainCarViewer.TrainCarOperationsChanged || trainCarViewer.RearBrakeHoseChanged
622630
|| trainCarViewer.FrontBrakeHoseChanged || ModifiedSetting || CarIdClicked || carOperations.CarOperationChanged)
623631
{
624632
Layout();
@@ -900,38 +908,54 @@ class buttonFrontAngleCock : Image
900908
readonly Viewer Viewer;
901909
readonly TrainCarOperationsViewerWindow TrainCarViewer;
902910
readonly bool First;
911+
readonly float carAngleCockAOpenAmount;
903912
public buttonFrontAngleCock(int x, int y, int size, Viewer viewer, TrainCar car, int carPosition)
904913
: base(x, y, size, size)
905914
{
906915
Viewer = viewer;
907916
TrainCarViewer = Viewer.TrainCarOperationsViewerWindow;
908917
First = car == viewer.PlayerTrain.Cars.First();
909-
Texture = !TrainCarViewer.TrainCarOperationsChanged && First ? FrontAngleCockClosed : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockAOpen ? FrontAngleCockOpened : FrontAngleCockClosed;
918+
919+
carAngleCockAOpenAmount = (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockAOpenAmount;
920+
Texture = !TrainCarViewer.TrainCarOperationsChanged && First ? FrontAngleCockClosed
921+
: carAngleCockAOpenAmount >= 1 ? FrontAngleCockOpened
922+
: carAngleCockAOpenAmount <= 0 ? FrontAngleCockClosed
923+
: FrontAngleCockPartial;
924+
910925
Source = new Rectangle(0, 0, size, size);
911926

912927
var trainCarOperations = Viewer.TrainCarOperationsWindow;
913928
if (!First && !trainCarOperations.WarningCarPosition[carPosition])
914929
{
915930
trainCarOperations.updateWarningCarPosition(carPosition, Texture, FrontAngleCockClosed);
931+
trainCarOperations.updateWarningCarPosition(carPosition, Texture, FrontAngleCockPartial);
916932
}
917933
}
918934
}
919935
class buttonRearAngleCock : Image
920936
{
921937
readonly Viewer Viewer;
922938
readonly bool Last;
939+
readonly float carAngleCockBOpenAmount;
923940
public buttonRearAngleCock(int x, int y, int size, Viewer viewer, TrainCar car, int carPosition)
924941
: base(x, y, size, size)
925942
{
926943
Viewer = viewer;
927944
Last = car == viewer.PlayerTrain.Cars.Last();
928-
Texture = Last ? RearAngleCockClosed : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockBOpen ? RearAngleCockOpened : RearAngleCockClosed;
945+
946+
carAngleCockBOpenAmount = (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
947+
Texture = Last ? RearAngleCockClosed
948+
: carAngleCockBOpenAmount >= 1 ? RearAngleCockOpened
949+
: carAngleCockBOpenAmount <= 0 ? RearAngleCockClosed
950+
: RearAngleCockPartial;
951+
929952
Source = new Rectangle(0, 0, size, size);
930953

931954
var trainCarOperations = Viewer.TrainCarOperationsWindow;
932955
if (!Last && !trainCarOperations.WarningCarPosition[carPosition])
933956
{
934957
trainCarOperations.updateWarningCarPosition(carPosition, Texture, RearAngleCockClosed);
958+
trainCarOperations.updateWarningCarPosition(carPosition, Texture, RearAngleCockPartial);
935959
}
936960
}
937961
}

Source/RunActivity/Viewer3D/WebServices/TrainCarOperationsWebpage.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -552,12 +552,15 @@ private void fillStatusFrontAngleCock(int carPosition)
552552
{
553553
TrainCar trainCar = Viewer.PlayerTrain.Cars[carPosition];
554554
bool first = trainCar == Viewer.PlayerTrain.Cars.First();
555+
var carAngleCockAOpenAmount = Viewer.PlayerTrain.Cars[carPosition].BrakeSystem.AngleCockAOpenAmount;
555556

556557
StatusCurrent.Status[carPosition].Add(
557558
new OperationsStatus.Operation
558559
{
559560
Enabled = true,
560-
Filename = trainCar.BrakeSystem.AngleCockAOpen ? "TrainOperationsFrontAngleCockOpened32.png" : "TrainOperationsFrontAngleCockClosed32.png",
561+
Filename = carAngleCockAOpenAmount >= 1 ? "TrainOperationsFrontAngleCockOpened32.png"
562+
: carAngleCockAOpenAmount <= 0 ? "TrainOperationsFrontAngleCockClosed32.png"
563+
: "TrainOperationsFrontAngleCockPartial32.png",
561564
Functionname = "buttonFrontAngleCockClick",
562565
CarPosition = carPosition
563566
});
@@ -732,12 +735,15 @@ private void fillStatusRearAngleCock(int carPosition)
732735
{
733736
TrainCar trainCar = Viewer.PlayerTrain.Cars[carPosition];
734737
bool last = trainCar == Viewer.PlayerTrain.Cars.Last();
738+
var carAngleCockBOpenAmount = Viewer.PlayerTrain.Cars[carPosition].BrakeSystem.AngleCockBOpenAmount;
735739

736740
StatusCurrent.Status[carPosition].Add(
737741
new OperationsStatus.Operation
738742
{
739743
Enabled = true,
740-
Filename = trainCar.BrakeSystem.AngleCockBOpen ? "TrainOperationsRearAngleCockOpened32.png" : "TrainOperationsRearAngleCockClosed32.png",
744+
Filename = carAngleCockBOpenAmount >= 1 ? "TrainOperationsRearAngleCockOpened32.png"
745+
: carAngleCockBOpenAmount <= 0 ? "TrainOperationsRearAngleCockClosed32.png"
746+
: "TrainOperationsRearAngleCockPartial32.png",
741747
Functionname = "buttonRearAngleCockClick",
742748
CarPosition = carPosition
743749
});
833 Bytes
Loading
844 Bytes
Loading

0 commit comments

Comments
 (0)