Skip to content

Commit 2a59320

Browse files
committed
Fix: When using VaccumSinglePipe, AngleCock should not be available.
1 parent fc12d90 commit 2a59320

File tree

7 files changed

+132
-56
lines changed

7 files changed

+132
-56
lines changed
Loading
Loading

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsViewerWindow.cs

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ public class TrainCarOperationsViewerWindow : Window
4545
internal static Texture2D BleedOffValveNotAvailable;
4646
internal static Texture2D BrakeHoseCon;
4747
internal static Texture2D BrakeHoseDis;
48+
internal static Texture2D BrakeHoseFirstCon;
49+
internal static Texture2D BrakeHoseRearCon;
4850
internal static Texture2D BrakeHoseFirstDis;
49-
internal static Texture2D BrakeHoseLastDis;
51+
internal static Texture2D BrakeHoseRearDis;
5052
internal static Texture2D Coupler;
5153
internal static Texture2D CouplerFront;
5254
internal static Texture2D CouplerRear;
@@ -57,6 +59,7 @@ public class TrainCarOperationsViewerWindow : Window
5759
internal static Texture2D FrontAngleCockOpened;
5860
internal static Texture2D FrontAngleCockClosed;
5961
internal static Texture2D FrontAngleCockPartial;
62+
internal static Texture2D FrontAngleCockNotAvailable;
6063
internal static Texture2D HandBrakeSet;
6164
internal static Texture2D HandBrakeNotSet;
6265
internal static Texture2D HandBrakeNotAvailable;
@@ -71,6 +74,7 @@ public class TrainCarOperationsViewerWindow : Window
7174
internal static Texture2D RearAngleCockOpened;
7275
internal static Texture2D RearAngleCockClosed;
7376
internal static Texture2D RearAngleCockPartial;
77+
internal static Texture2D RearAngleCockNotAvailable;
7478
internal static Texture2D ResetBrakesOff;
7579
internal static Texture2D ResetBrakesOn;
7680
internal static Texture2D ResetBrakesWarning;
@@ -206,7 +210,9 @@ protected internal override void Initialize()
206210
Rectangle BrakeHoseConRect = new Rectangle(0, 64, 32, 32);
207211
Rectangle BrakeHoseDisRect = new Rectangle(32, 64, 32, 32);
208212
Rectangle BrakeHoseFirstDisRect = new Rectangle(64, 64, 32, 32);
209-
Rectangle BrakeHoseLastDisRect = new Rectangle(96, 64, 32, 32);
213+
Rectangle BrakeHoseRearDisRect = new Rectangle(96, 64, 32, 32);
214+
Rectangle BrakeHoseFirstConRect = new Rectangle(64, 320, 32, 32);
215+
Rectangle BrakeHoseRearConRect = new Rectangle(96, 320, 32, 32);
210216

211217
Rectangle CouplerNotAvailableRect = new Rectangle(0, 96, 32, 32);
212218
Rectangle CouplerFrontRect = new Rectangle(32, 96, 32, 32);
@@ -232,6 +238,8 @@ protected internal override void Initialize()
232238
Rectangle RearAngleCockOpenedRect = new Rectangle(96, 224, 32, 32);
233239
Rectangle FrontAngleCockPartialRect = new Rectangle(96, 160, 32, 32);
234240
Rectangle RearAngleCockPartialRect = new Rectangle(96, 288, 32, 32);
241+
Rectangle FrontAngleCockNotAvailableRect = new Rectangle(0, 320, 32, 32);
242+
Rectangle RearAngleCockNotAvailableRect = new Rectangle(32, 320, 32, 32);
235243

236244
Rectangle PowerOnRect = new Rectangle(0, 288, 32, 32);
237245
Rectangle PowerOffRect = new Rectangle(32, 288, 32, 32);
@@ -256,7 +264,9 @@ protected internal override void Initialize()
256264
BrakeHoseCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseConRect);
257265
BrakeHoseDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseDisRect);
258266
BrakeHoseFirstDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseFirstDisRect);
259-
BrakeHoseLastDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseLastDisRect);
267+
BrakeHoseRearDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseRearDisRect);
268+
BrakeHoseFirstCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseFirstConRect);
269+
BrakeHoseRearCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseRearConRect);
260270

261271
Coupler = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, CouplerRect);
262272
CouplerFront = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, CouplerFrontRect);
@@ -268,6 +278,7 @@ protected internal override void Initialize()
268278
FrontAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockClosedRect);
269279
FrontAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockOpenedRect);
270280
FrontAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockPartialRect);
281+
FrontAngleCockNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockNotAvailableRect);
271282

272283
HandBrakeNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, HandBrakeNotAvailableRect);
273284
HandBrakeNotSet = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, HandBrakeNotSetRect);
@@ -286,6 +297,7 @@ protected internal override void Initialize()
286297
RearAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockClosedRect);
287298
RearAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockOpenedRect);
288299
RearAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockPartialRect);
300+
RearAngleCockNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockNotAvailableRect);
289301

290302
ResetBrakesOff = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, ResetBrakesOffRect);
291303
ResetBrakesOn = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, ResetBrakesOnRect);
@@ -846,7 +858,7 @@ public buttonRearBrakeHose(int x, int y, int size, Viewer viewer, TrainCar car,
846858
TrainCarViewer = Viewer.TrainCarOperationsViewerWindow;
847859
CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
848860
var last = car == viewer.PlayerTrain.Cars.Last();
849-
Texture = last ? BrakeHoseLastDis : (CurrentCar as MSTSWagon).BrakeSystem.RearBrakeHoseConnected ? BrakeHoseCon : BrakeHoseDis;
861+
Texture = last ? BrakeHoseRearDis : (CurrentCar as MSTSWagon).BrakeSystem.RearBrakeHoseConnected ? BrakeHoseCon : BrakeHoseDis;
850862
Source = new Rectangle(0, 0, size, size);
851863
if (!last)
852864
{
@@ -884,20 +896,26 @@ public buttonFrontAngleCock(int x, int y, int size, Viewer viewer, TrainCar car,
884896
CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
885897
var first = car == Viewer.PlayerTrain.Cars.First();
886898

887-
var carAngleCockAOpenAmount = CurrentCar.BrakeSystem.AngleCockAOpenAmount;
888-
var carAngleCockAOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpen;
889-
Texture = !TrainCarViewer.TrainCarOperationsChanged && first ? FrontAngleCockClosed
890-
: carAngleCockAOpenAmount > 0 && carAngleCockAOpenAmount < 1? FrontAngleCockPartial
891-
: carAngleCockAOpen ? FrontAngleCockOpened
892-
: FrontAngleCockClosed;
893-
894-
Source = new Rectangle(0, 0, size, size);
895-
if (!first)
899+
if (CurrentCar.BrakeSystem is VacuumSinglePipe)
896900
{
897-
Click += new Action<Control, Point>(buttonFrontAngleCock_Click);
901+
Texture = FrontAngleCockNotAvailable;
898902
}
903+
else
904+
{
905+
var carAngleCockAOpenAmount = CurrentCar.BrakeSystem.AngleCockAOpenAmount;
906+
var carAngleCockAOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpen;
907+
Texture = !TrainCarViewer.TrainCarOperationsChanged && first ? FrontAngleCockClosed
908+
: carAngleCockAOpenAmount > 0 && carAngleCockAOpenAmount < 1 ? FrontAngleCockPartial
909+
: carAngleCockAOpen ? FrontAngleCockOpened
910+
: FrontAngleCockClosed;
911+
912+
if (!first)
913+
{
914+
Click += new Action<Control, Point>(buttonFrontAngleCock_Click);
915+
}
916+
}
917+
Source = new Rectangle(0, 0, size, size);
899918
}
900-
901919
void buttonFrontAngleCock_Click(Control arg1, Point arg2)
902920
{
903921
new ToggleAngleCockACommand(Viewer.Log, (CurrentCar as MSTSWagon), !(CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpen);
@@ -929,19 +947,25 @@ public buttonRearAngleCock(int x, int y, int size, Viewer viewer, TrainCar car,
929947
CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
930948
var last = car == Viewer.PlayerTrain.Cars.Last();
931949

932-
var carAngleCockBOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
933-
var carAngleCockBOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpen;
934-
Texture = last ? RearAngleCockClosed
935-
: carAngleCockBOpenAmount > 0 && carAngleCockBOpenAmount < 1 ? RearAngleCockPartial
936-
: carAngleCockBOpen ? RearAngleCockOpened
937-
: RearAngleCockClosed;
938-
939-
Source = new Rectangle(0, 0, size, size);
940-
941-
if (!last)
950+
if (CurrentCar.BrakeSystem is VacuumSinglePipe)
942951
{
943-
Click += new Action<Control, Point>(buttonRearAngleCock_Click);
952+
Texture = RearAngleCockNotAvailable;
944953
}
954+
else
955+
{
956+
var carAngleCockBOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
957+
var carAngleCockBOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpen;
958+
Texture = last ? RearAngleCockClosed
959+
: carAngleCockBOpenAmount > 0 && carAngleCockBOpenAmount < 1 ? RearAngleCockPartial
960+
: carAngleCockBOpen ? RearAngleCockOpened
961+
: RearAngleCockClosed;
962+
963+
if (!last)
964+
{
965+
Click += new Action<Control, Point>(buttonRearAngleCock_Click);
966+
}
967+
}
968+
Source = new Rectangle(0, 0, size, size);
945969
}
946970

947971
void buttonRearAngleCock_Click(Control arg1, Point arg2)

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsWindow.cs

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ public class TrainCarOperationsWindow : Window
5353
internal static Texture2D BrakeHoseCon;
5454
internal static Texture2D BrakeHoseDis;
5555
internal static Texture2D BrakeHoseFirstDis;
56-
internal static Texture2D BrakeHoseLastDis;
56+
internal static Texture2D BrakeHoseFirstCon;
57+
internal static Texture2D BrakeHoseRearDis;
58+
internal static Texture2D BrakeHoseRearCon;
5759
internal static Texture2D Coupler;
5860
internal static Texture2D CouplerFront;
5961
internal static Texture2D CouplerNotAvailable;
@@ -64,6 +66,7 @@ public class TrainCarOperationsWindow : Window
6466
internal static Texture2D FrontAngleCockClosed;
6567
internal static Texture2D FrontAngleCockOpened;
6668
internal static Texture2D FrontAngleCockPartial;
69+
internal static Texture2D FrontAngleCockNotAvailable;
6770
internal static Texture2D HandBrakeNotAvailable;
6871
internal static Texture2D HandBrakeNotSet;
6972
internal static Texture2D HandBrakeSet;
@@ -75,6 +78,7 @@ public class TrainCarOperationsWindow : Window
7578
internal static Texture2D RearAngleCockClosed;
7679
internal static Texture2D RearAngleCockOpened;
7780
internal static Texture2D RearAngleCockPartial;
81+
internal static Texture2D RearAngleCockNotAvailable;
7882

7983
public bool AngleCockAPartiallyEnabled;
8084
public bool AngleCockBPartiallyEnabled;
@@ -221,6 +225,8 @@ protected internal override void Initialize()
221225
Rectangle BrakeHoseDisRect = new Rectangle(16, 32, 16, 16);
222226
Rectangle BrakeHoseFirstDisRect = new Rectangle(32, 32, 16, 16);
223227
Rectangle BrakeHoseLastDisRect = new Rectangle(48, 32, 16, 16);
228+
Rectangle BrakeHoseFirstConRect = new Rectangle(0, 144, 16, 16);
229+
Rectangle BrakeHoseRearConRect = new Rectangle(16, 144, 16, 16);
224230

225231
Rectangle CouplerNotAvailableRect = new Rectangle(0, 48, 16, 16);
226232
Rectangle CouplerFrontRect = new Rectangle(16, 48, 16, 16);
@@ -242,6 +248,8 @@ protected internal override void Initialize()
242248
Rectangle RearAngleCockOpenedRect = new Rectangle(48, 96, 16, 16);
243249
Rectangle FrontAngleCockPartialRect = new Rectangle(0, 128, 16, 16);
244250
Rectangle RearAngleCockPartialRect = new Rectangle(16, 128, 16, 16);
251+
Rectangle FrontAngleCockNotAvailableRect = new Rectangle(32, 128, 16, 16);
252+
Rectangle RearAngleCockNotAvailableRect = new Rectangle(48, 128, 16, 16);
245253

246254
Rectangle PowerOnRect = new Rectangle(0, 112, 16, 16);
247255
Rectangle PowerOffRect = new Rectangle(16, 112, 16, 16);
@@ -268,11 +276,14 @@ protected internal override void Initialize()
268276
BrakeHoseCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseConRect);
269277
BrakeHoseDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseDisRect);
270278
BrakeHoseFirstDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseFirstDisRect);
271-
BrakeHoseLastDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseLastDisRect);
279+
BrakeHoseRearDis = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseLastDisRect);
280+
BrakeHoseFirstCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseFirstConRect);
281+
BrakeHoseRearCon = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BrakeHoseRearConRect);
272282

273283
FrontAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockOpenedRect);
274284
FrontAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockClosedRect);
275285
FrontAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockPartialRect);
286+
FrontAngleCockNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, FrontAngleCockNotAvailableRect);
276287

277288
BleedOffValveClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BleedOffValveClosedRect);
278289
BleedOffValveOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, BleedOffValveOpenedRect);
@@ -281,6 +292,7 @@ protected internal override void Initialize()
281292
RearAngleCockClosed = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockClosedRect);
282293
RearAngleCockOpened = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockOpenedRect);
283294
RearAngleCockPartial = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockPartialRect);
295+
RearAngleCockNotAvailable = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, RearAngleCockNotAvailableRect);
284296

285297
PowerChanging = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, PowerChangingRect);
286298
PowerOff = SharedTextureManager.Get(GraphicsDeviceRender, TrainOperationsPath, PowerOffRect);
@@ -1057,7 +1069,7 @@ public buttonRearBrakeHose(int x, int y, int size, Viewer viewer, TrainCar car,
10571069
Viewer = viewer;
10581070
TrainCarViewer = Viewer.TrainCarOperationsViewerWindow;
10591071
var Last = car == viewer.PlayerTrain.Cars.Last();
1060-
Texture = Last ? BrakeHoseLastDis : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.RearBrakeHoseConnected ? BrakeHoseCon : BrakeHoseDis;
1072+
Texture = Last ? BrakeHoseRearDis : (viewer.PlayerTrain.Cars[carPosition] as MSTSWagon).BrakeSystem.RearBrakeHoseConnected ? BrakeHoseCon : BrakeHoseDis;
10611073

10621074
// Update from viewer
10631075
var viewerCarposition = TrainCarViewer.CarPosition;
@@ -1087,13 +1099,19 @@ public buttonFrontAngleCock(int x, int y, int size, Viewer viewer, TrainCar car,
10871099
var First = car == viewer.PlayerTrain.Cars.First();
10881100
var CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
10891101

1090-
var carAngleCockAOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpenAmount;
1091-
var carAngleCockAOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpen;
1092-
Texture = !TrainCarViewer.TrainCarOperationsChanged && First ? FrontAngleCockClosed
1093-
: carAngleCockAOpenAmount > 0 && carAngleCockAOpenAmount < 1 ? FrontAngleCockPartial
1094-
: carAngleCockAOpen ? FrontAngleCockOpened
1095-
: FrontAngleCockClosed;
1096-
1102+
if (CurrentCar.BrakeSystem is VacuumSinglePipe)
1103+
{
1104+
Texture = FrontAngleCockNotAvailable;
1105+
}
1106+
else
1107+
{
1108+
var carAngleCockAOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpenAmount;
1109+
var carAngleCockAOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockAOpen;
1110+
Texture = !TrainCarViewer.TrainCarOperationsChanged && First ? FrontAngleCockClosed
1111+
: carAngleCockAOpenAmount > 0 && carAngleCockAOpenAmount < 1 ? FrontAngleCockPartial
1112+
: carAngleCockAOpen ? FrontAngleCockOpened
1113+
: FrontAngleCockClosed;
1114+
}
10971115
Source = new Rectangle(0, 0, size, size);
10981116

10991117
var trainCarOperations = Viewer.TrainCarOperationsWindow;
@@ -1114,13 +1132,19 @@ public buttonRearAngleCock(int x, int y, int size, Viewer viewer, TrainCar car,
11141132
var Last = car == viewer.PlayerTrain.Cars.Last();
11151133
var CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
11161134

1117-
var carAngleCockBOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
1118-
var carAngleCockBOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpen;
1119-
Texture = Last ? RearAngleCockClosed
1120-
: carAngleCockBOpenAmount > 0 && carAngleCockBOpenAmount < 1 ? RearAngleCockPartial
1121-
: carAngleCockBOpen ? RearAngleCockOpened
1122-
: RearAngleCockClosed;
1123-
1135+
if (CurrentCar.BrakeSystem is VacuumSinglePipe)
1136+
{
1137+
Texture = RearAngleCockNotAvailable;
1138+
}
1139+
else
1140+
{
1141+
var carAngleCockBOpenAmount = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpenAmount;
1142+
var carAngleCockBOpen = (CurrentCar as MSTSWagon).BrakeSystem.AngleCockBOpen;
1143+
Texture = Last ? RearAngleCockClosed
1144+
: carAngleCockBOpenAmount > 0 && carAngleCockBOpenAmount < 1 ? RearAngleCockPartial
1145+
: carAngleCockBOpen ? RearAngleCockOpened
1146+
: RearAngleCockClosed;
1147+
}
11241148
Source = new Rectangle(0, 0, size, size);
11251149

11261150
var trainCarOperations = Viewer.TrainCarOperationsWindow;

0 commit comments

Comments
 (0)