Skip to content

Commit

Permalink
Merge pull request #816 from Csantucci/fix-EOT-dismount-after-reverse
Browse files Browse the repository at this point in the history
Bug fix for https://bugs.launchpad.net/or/+bug/2014992 EOT can't be dismounted after train reversal
  • Loading branch information
Csantucci committed Apr 19, 2023
2 parents efe66c5 + eae646d commit 8855923
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
10 changes: 8 additions & 2 deletions Source/Orts.Simulation/Common/Commands.cs
Expand Up @@ -2268,9 +2268,9 @@ public override void Redo()
{
if (Receiver?.Train != null)
{
var wagonFilePath = PickedEOTType.ToLower();
if (ToState)
{
var wagonFilePath = PickedEOTType.ToLower();
try
{
EOT eot = (EOT)RollingStock.Load(Receiver.Train.Simulator, Receiver.Train, wagonFilePath);
Expand All @@ -2287,8 +2287,14 @@ public override void Redo()
}
else
{
Receiver.Train.RecalculateRearTDBTraveller();
var car = Receiver.Train.Cars[Receiver.Train.Cars.Count - 1];
if (wagonFilePath != car.WagFilePath.ToLower())
{
car = Receiver.Train.Cars[0];
if (Receiver.Train.LeadLocomotive != null) Receiver.Train.LeadLocomotiveIndex--;
}
else
Receiver.Train.RecalculateRearTDBTraveller();
car.Train = null;
car.IsPartOfActiveTrain = false; // to stop sounds
Receiver.Train.Cars.Remove(car);
Expand Down
6 changes: 4 additions & 2 deletions Source/RunActivity/Viewer3D/Popups/EOTListWindow.cs
Expand Up @@ -103,7 +103,8 @@ void EOTListLabel_Click(Control arg1, Point arg2)
Viewer.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Can't attach EOT if player train not stopped"));
return;
}
if (PickedEOTTypeFromList.ToLower() != Viewer.PlayerLocomotive.Train.Cars[Viewer.PlayerLocomotive.Train.Cars.Count - 1].WagFilePath.ToLower())
if (PickedEOTTypeFromList.ToLower() != Viewer.PlayerLocomotive.Train.Cars[Viewer.PlayerLocomotive.Train.Cars.Count - 1].WagFilePath.ToLower() &&
PickedEOTTypeFromList.ToLower() != Viewer.PlayerLocomotive.Train.Cars[0].WagFilePath.ToLower())
{
if (Viewer.PlayerLocomotive.Train?.EOT != null)
{
Expand All @@ -113,7 +114,8 @@ void EOTListLabel_Click(Control arg1, Point arg2)
//Ask to mount EOT
new EOTMountCommand(Viewer.Log, true, PickedEOTTypeFromList);
}
else if (PickedEOTTypeFromList.ToLower() == Viewer.PlayerLocomotive.Train.Cars[Viewer.PlayerLocomotive.Train.Cars.Count - 1].WagFilePath.ToLower())
else if (PickedEOTTypeFromList.ToLower() == Viewer.PlayerLocomotive.Train.Cars[Viewer.PlayerLocomotive.Train.Cars.Count - 1].WagFilePath.ToLower() ||
PickedEOTTypeFromList.ToLower() == Viewer.PlayerLocomotive.Train.Cars[0].WagFilePath.ToLower())
{
new EOTMountCommand(Viewer.Log, false, PickedEOTTypeFromList);
}
Expand Down

0 comments on commit 8855923

Please sign in to comment.