@@ -83,6 +83,7 @@ public class TrainCarOperationsWindow : Window
8383 public int SeparatorCount ;
8484 public int SpacerRowCount ;
8585 public int SymbolsRowCount ;
86+ public bool BrakeHoseCarCoupling ;
8687
8788 public ControlLayout Client ;
8889 public bool CarPositionChanged ;
@@ -499,6 +500,8 @@ void AddSpace()
499500 // Allows to resize the window according to the carPosition value.
500501 if ( RowsCount > carPosition ) RowsCount = carPosition ;
501502 if ( SeparatorCount > carPosition - 1 ) SeparatorCount = carPosition - 1 ;
503+
504+ BrakeHoseCarCoupling = false ; // All brake hoses checked
502505 }
503506 }
504507 return Vbox ;
@@ -603,14 +606,11 @@ public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
603606 PlayerTrain = Owner . Viewer . PlayerTrain ;
604607 if ( LastPlayerTrainCars != Owner . Viewer . PlayerTrain . Cars . Count || ! LayoutUpdated )
605608 {
606- // Updates BrakeHoses
609+ // Updates brake hoses
607610 if ( LastPlayerTrainCars > 0 && PlayerTrain . Cars . Count > LastPlayerTrainCars && ( ( PlayerTrain . Cars [ LastPlayerTrainCars ] as MSTSWagon ) . BrakeSystem . FrontBrakeHoseConnected != ( PlayerTrain . Cars [ LastPlayerTrainCars - 1 ] as MSTSWagon ) . BrakeSystem . RearBrakeHoseConnected ) )
608611 {
609- // When coupling cars. The front brake hose of the new car is unconnected, the brake hose of the previous car must also be unconnected.
610- new WagonBrakeHoseRearConnectCommand ( Owner . Viewer . Log , ( PlayerTrain . Cars [ LastPlayerTrainCars - 1 ] as MSTSWagon ) , ! ( PlayerTrain . Cars [ LastPlayerTrainCars - 1 ] as MSTSWagon ) . BrakeSystem . RearBrakeHoseConnected ) ;
611- new WagonBrakeHoseRearConnectCommand ( Owner . Viewer . Log , ( PlayerTrain . Cars [ LastPlayerTrainCars ] as MSTSWagon ) , ! ( PlayerTrain . Cars [ LastPlayerTrainCars ] as MSTSWagon ) . BrakeSystem . FrontBrakeHoseConnected ) ;
612+ BrakeHoseCarCoupling = true ; // Enable to check all brake hoses when coupling cars
612613 }
613-
614614 LayoutUpdated = true ;
615615 Layout ( ) ;
616616 localScrollLayout ( SelectedCarPosition ) ;
@@ -837,6 +837,7 @@ class buttonFrontBrakeHose : Image
837837 {
838838 readonly Viewer Viewer ;
839839 readonly TrainCarOperationsViewerWindow TrainCarViewer ;
840+ readonly TrainCarOperationsWindow TrainCarOperations ;
840841 readonly CarOperationsWindow CarOperations ;
841842 readonly int CarPosition ;
842843 readonly bool First ;
@@ -845,10 +846,25 @@ public buttonFrontBrakeHose(int x, int y, int size, Viewer viewer, TrainCar car,
845846 {
846847 Viewer = viewer ;
847848 TrainCarViewer = Viewer . TrainCarOperationsViewerWindow ;
849+ TrainCarOperations = Viewer . TrainCarOperationsWindow ;
848850 CarOperations = Viewer . CarOperationsWindow ;
851+ var PlayerTrain = Viewer . PlayerTrain ;
849852
850853 CarPosition = carPosition ;
851854 First = car == viewer . PlayerTrain . Cars . First ( ) ;
855+ if ( CarPosition > 0 && TrainCarOperations . BrakeHoseCarCoupling )
856+ { // Sometimes when coupling cars. The front brake hose of the new car and the brake hose of the previous car are not synchronised.
857+ var frontBrakeHoseCurrentCar = ( PlayerTrain . Cars [ CarPosition ] as MSTSWagon ) . BrakeSystem . FrontBrakeHoseConnected ;
858+ var rearBrakeHosePreviousCar = ( PlayerTrain . Cars [ CarPosition - 1 ] as MSTSWagon ) . BrakeSystem . RearBrakeHoseConnected ;
859+ if ( frontBrakeHoseCurrentCar && ! rearBrakeHosePreviousCar )
860+ {
861+ new WagonBrakeHoseConnectCommand ( Viewer . Log , ( PlayerTrain . Cars [ CarPosition ] as MSTSWagon ) , ! ( PlayerTrain . Cars [ CarPosition ] as MSTSWagon ) . BrakeSystem . FrontBrakeHoseConnected ) ;
862+ }
863+ else if ( ! frontBrakeHoseCurrentCar && rearBrakeHosePreviousCar )
864+ {
865+ new WagonBrakeHoseRearConnectCommand ( Viewer . Log , ( PlayerTrain . Cars [ CarPosition - 1 ] as MSTSWagon ) , ! ( PlayerTrain . Cars [ CarPosition - 1 ] as MSTSWagon ) . BrakeSystem . RearBrakeHoseConnected ) ;
866+ }
867+ }
852868 Texture = First ? BrakeHoseFirstDis : ( viewer . PlayerTrain . Cars [ carPosition ] as MSTSWagon ) . BrakeSystem . FrontBrakeHoseConnected ? BrakeHoseCon : BrakeHoseDis ;
853869
854870 // Allows compatibility with CarOperationWindow
0 commit comments