Skip to content

Commit 1ad9889

Browse files
committed
Fix: F9 crashes with a front coupled single steam locomotive.
1 parent dcc1764 commit 1ad9889

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsViewerWindow.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,8 +605,12 @@ public buttonCouplerFront(int x, int y, int size, Viewer viewer, TrainCar car, i
605605
bool first = car == Viewer.PlayerTrain.Cars.First();
606606
var CurrentCar = Viewer.PlayerTrain.Cars[carPosition];
607607

608-
var isSteamAndHasTender = (CurrentCar is MSTSSteamLocomotive) &&
609-
(carPosition + (CurrentCar.Flipped ? -1 : 1) < Viewer.PlayerTrain.Cars.Count) && (Viewer.PlayerTrain.Cars[carPosition + (CurrentCar.Flipped ? -1 : 1)].WagonType == MSTSWagon.WagonTypes.Tender);
608+
var isSteamAndHasTender = false;
609+
if (CurrentCar is MSTSSteamLocomotive)
610+
{
611+
var validTenderPosition = CurrentCar.Flipped ? carPosition - 1 > -1 : carPosition + 1 < Viewer.PlayerTrain.Cars.Count;
612+
isSteamAndHasTender = validTenderPosition && (Viewer.PlayerTrain.Cars[carPosition + (CurrentCar.Flipped ? -1 : 1)].WagonType == MSTSWagon.WagonTypes.Tender);
613+
}
610614
var isTender = CurrentCar.WagonType == MSTSWagon.WagonTypes.Tender;
611615
if (isSteamAndHasTender || isTender)
612616
{

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsWindow.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -915,8 +915,12 @@ public buttonCouplerFront(int x, int y, int size, Viewer viewer, TrainCar car, i
915915
First = car == Viewer.PlayerTrain.Cars.First();
916916
var CurrentCar = Viewer.PlayerTrain.Cars[carPosition]; ;
917917

918-
var isSteamAndHasTender = (CurrentCar is MSTSSteamLocomotive) &&
919-
(carPosition + (CurrentCar.Flipped ? -1 : 1) < Viewer.PlayerTrain.Cars.Count) && (Viewer.PlayerTrain.Cars[carPosition + (CurrentCar.Flipped ? -1 : 1)].WagonType == MSTSWagon.WagonTypes.Tender);
918+
var isSteamAndHasTender = false;
919+
if (CurrentCar is MSTSSteamLocomotive)
920+
{
921+
var validTenderPosition = CurrentCar.Flipped ? carPosition - 1 > -1 : carPosition + 1 < Viewer.PlayerTrain.Cars.Count;
922+
isSteamAndHasTender = validTenderPosition && (Viewer.PlayerTrain.Cars[carPosition + (CurrentCar.Flipped ? -1 : 1)].WagonType == MSTSWagon.WagonTypes.Tender);
923+
}
920924
var isTender = CurrentCar.WagonType == MSTSWagon.WagonTypes.Tender;
921925

922926
if (isSteamAndHasTender || isTender)

0 commit comments

Comments
 (0)