Skip to content

Commit b2a8053

Browse files
Merge pull request #1021 from sweiland-openrails/TrainCarOperationsBugfixes
Various traincar operations windows fixes
2 parents 93e8388 + 3250dea commit b2a8053

12 files changed

+536
-228
lines changed

Source/Orts.Simulation/Simulation/Physics/Train.cs

+5-7
Original file line numberDiff line numberDiff line change
@@ -1522,13 +1522,11 @@ public void ReverseCars()
15221522
// Reverse brake hose connections and angle cocks
15231523
for (var i = 0; i < Cars.Count; i++)
15241524
{
1525-
var ac = Cars[i].BrakeSystem.AngleCockAOpen;
1526-
Cars[i].BrakeSystem.AngleCockAOpen = Cars[i].BrakeSystem.AngleCockBOpen;
1527-
Cars[i].BrakeSystem.AngleCockBOpen = ac;
1528-
if (i == Cars.Count - 1)
1529-
Cars[i].BrakeSystem.FrontBrakeHoseConnected = false;
1530-
else
1531-
Cars[i].BrakeSystem.FrontBrakeHoseConnected = Cars[i + 1].BrakeSystem.FrontBrakeHoseConnected;
1525+
var bs = Cars[i].BrakeSystem;
1526+
(bs.AngleCockBOpen, bs.AngleCockAOpen) = (bs.AngleCockAOpen, bs.AngleCockBOpen);
1527+
(bs.AngleCockBOpenAmount, bs.AngleCockAOpenAmount) = (bs.AngleCockAOpenAmount, bs.AngleCockBOpenAmount);
1528+
(bs.AngleCockBOpenTime, bs.AngleCockAOpenTime) = (bs.AngleCockAOpenTime, bs.AngleCockBOpenTime);
1529+
(bs.RearBrakeHoseConnected, bs.FrontBrakeHoseConnected) = (bs.FrontBrakeHoseConnected, bs.RearBrakeHoseConnected);
15321530
}
15331531
// Reverse the actual order of the cars in the train.
15341532
Cars.Reverse();
Loading
Loading

Source/RunActivity/Viewer3D/Cameras.cs

+6-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
using Orts.Simulation.Physics;
3030
using Orts.Simulation.RollingStocks;
3131
using Orts.Simulation.Signalling;
32+
using Orts.Viewer3D.Popups;
3233
using ORTS.Common;
3334
using ORTS.Common.Input;
3435
using ORTS.Settings;
@@ -129,7 +130,10 @@ public virtual void Reset()
129130
public void Activate()
130131
{
131132
ScreenChanged();
132-
OnActivate(Viewer.Camera == this);
133+
if (!Viewer.IsFormationReversed)// Avoids flickering
134+
{
135+
OnActivate(Viewer.Camera == this);
136+
}
133137
Viewer.Camera = this;
134138
Viewer.Simulator.PlayerIsInCab = Style == Styles.Cab || Style == Styles.ThreeDimCab;
135139
Update(ElapsedTime.Zero);
@@ -1076,7 +1080,7 @@ protected override void OnActivate(bool sameCamera)
10761080
}
10771081
else
10781082
{
1079-
isVisibleTrainCarViewerOrWebpage = Viewer.TrainCarOperationsViewerWindow.Visible || (Viewer.TrainCarOperationsWebpage.Connections > 0 && Viewer.TrainCarOperationsWebpage.TrainCarSelected);
1083+
isVisibleTrainCarViewerOrWebpage = (Viewer.TrainCarOperationsWindow.Visible && !Viewer.TrainCarOperationsViewerWindow.Visible) || Viewer.TrainCarOperationsViewerWindow.Visible || (Viewer.TrainCarOperationsWebpage?.Connections > 0 && Viewer.TrainCarOperationsWebpage.TrainCarSelected);
10801084
}
10811085

10821086
if (attachedCar == null || attachedCar.Train != Viewer.SelectedTrain || carPosition != oldCarPosition)

Source/RunActivity/Viewer3D/Popups/OSDCars.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,17 @@ public override void PrepareFrame(RenderFrame frame, ORTS.Common.ElapsedTime ela
7878
var newLabels = new Dictionary<TrainCar, LabelPrimitive>(labels.Count);
7979
var cars = Owner.Viewer.World.Trains.Cars;
8080
var cameraLocation = Owner.Viewer.Camera.CameraWorldLocation;
81-
var carID = Owner.Viewer.TrainCarOperationsViewerWindow.CurrentCarID;
81+
8282
//data from Webpage
8383
var trainCarWebpage = Owner.Viewer.TrainCarOperationsWebpage;
84+
var trainCarWebpageActive = trainCarWebpage != null && trainCarWebpage.Connections > 0 && trainCarWebpage.TrainCarSelected;
8485
var carIDWebpage = trainCarWebpage != null && trainCarWebpage.Connections > 0 ? trainCarWebpage.CurrentCarID : "";
85-
bool isVisibleTrainCarViewerOrWebpage = Owner.Viewer.TrainCarOperationsViewerWindow.Visible || (trainCarWebpage != null && trainCarWebpage.Connections > 0 && Owner.Viewer.TrainCarOperationsWebpage.TrainCarSelected);
86+
87+
//shows only one CarID label when traincaroperationsviewer is not visible
88+
var trainCarOperationsViewer = Owner.Viewer.TrainCarOperationsViewerWindow;
89+
var carID = Owner.Viewer.TrainCarOperationsViewerWindow.Visible ? trainCarOperationsViewer.CurrentCarID : trainCarWebpageActive ? trainCarWebpage.CurrentCarID : Owner.Viewer.TrainCarOperationsViewerWindow.CurrentCarID;
90+
91+
bool isVisibleTrainCarViewerOrWebpage = (Owner.Viewer.TrainCarOperationsWindow.Visible && !trainCarOperationsViewer.Visible) || trainCarOperationsViewer.Visible || trainCarWebpageActive;
8692
foreach (var car in cars.Keys)
8793
{
8894
// Calculates distance between camera and platform label.

Source/RunActivity/Viewer3D/Popups/TrainCarOperationsViewerWindow.cs

+180-126
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)