Skip to content

Commit 7347a80

Browse files
authored
Merge pull request #554 from Csantucci/fix-change-screenpage-crash-after-cabchange
Bug fix for Crash when switching cabs and changing screen page https://bugs.launchpad.net/or/+bug/1955575
2 parents e3e322f + 3329168 commit 7347a80

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

Source/RunActivity/Viewer3D/Commands.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public override void Redo()
9393
[Serializable()]
9494
public sealed class SelectScreenCommand : BooleanCommand
9595
{
96-
public static CabRenderer Receiver { get; set; }
96+
public static Viewer Receiver { get; set; }
9797

9898
public SelectScreenCommand(CommandLog log, bool toState, string screen, int display)
9999
: base(log, toState)
@@ -105,7 +105,10 @@ public void Redo(string screen, int display)
105105
{
106106
if (ToState)
107107
{
108-
Receiver.ActiveScreen[display] = screen;
108+
var finalReceiver = Receiver.Camera is ThreeDimCabCamera ?
109+
(Receiver.PlayerLocomotiveViewer as MSTSLocomotiveViewer).ThreeDimentionCabRenderer :
110+
(Receiver.PlayerLocomotiveViewer as MSTSLocomotiveViewer)._CabRenderer;
111+
finalReceiver.ActiveScreen[display] = screen;
109112
}
110113
}
111114

Source/RunActivity/Viewer3D/Viewer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,8 +590,7 @@ public void SetCommandReceivers()
590590

591591
ImmediateRefillCommand.Receiver = (MSTSLocomotiveViewer)PlayerLocomotiveViewer;
592592
RefillCommand.Receiver = (MSTSLocomotiveViewer)PlayerLocomotiveViewer;
593-
SelectScreenCommand.Receiver = (!Simulator.PlayerLocomotive.HasFront3DCab && !Simulator.PlayerLocomotive.HasRear3DCab) ?
594-
((MSTSLocomotiveViewer)PlayerLocomotiveViewer)._CabRenderer : ((MSTSLocomotiveViewer)PlayerLocomotiveViewer).ThreeDimentionCabRenderer;
593+
SelectScreenCommand.Receiver = this;
595594
ToggleOdometerCommand.Receiver = (MSTSLocomotive)PlayerLocomotive;
596595
ResetOdometerCommand.Receiver = (MSTSLocomotive)PlayerLocomotive;
597596
ToggleOdometerDirectionCommand.Receiver = (MSTSLocomotive)PlayerLocomotive;

0 commit comments

Comments
 (0)