Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EOT can't be dismounted after train reversal #816

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 8 additions & 2 deletions Source/Orts.Simulation/Common/Commands.cs
Expand Up @@ -2265,9 +2265,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 @@ -2284,8 +2284,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