@@ -202,6 +202,8 @@ public enum CABViewControlTypes
202202 ORTS_ELECTRIC_TRAIN_SUPPLY_COMMAND_SWITCH ,
203203 ORTS_ELECTRIC_TRAIN_SUPPLY_ON ,
204204 ORTS_2DEXTERNALWIPERS ,
205+ ORTS_SCREEN_SELECT ,
206+ ORTS_STATIC_DISPLAY ,
205207
206208 // TCS Controls
207209 ORTS_TCS1 ,
@@ -390,6 +392,10 @@ public class CabViewControl
390392 public double OldValue ;
391393 public string ACEFile = "" ;
392394
395+ public int Display ;
396+ public List < string > Screens ;
397+ public int CabViewpoint ;
398+
393399 public CABViewControlTypes ControlType = CABViewControlTypes . NONE ;
394400 public CABViewControlStyles ControlStyle = CABViewControlStyles . NONE ;
395401 public CABViewControlUnits Units = CABViewControlUnits . NONE ;
@@ -509,6 +515,32 @@ protected virtual float ParseRotation(STFReader stf)
509515 stf . SkipRestOfBlock ( ) ;
510516 return rotation ;
511517 }
518+
519+ protected virtual void ParseDisplay ( STFReader stf )
520+ {
521+ stf . MustMatch ( "(" ) ;
522+ Display = stf . ReadInt ( 0 ) ;
523+ stf . SkipRestOfBlock ( ) ;
524+ }
525+
526+ protected virtual void ParseScreen ( STFReader stf )
527+ {
528+ stf . MustMatch ( "(" ) ;
529+ var newScreen = stf . ReadString ( ) ;
530+ stf . SkipRestOfBlock ( ) ;
531+ if ( Screens == null )
532+ Screens = new List < string > ( ) ;
533+ Screens . Add ( newScreen . ToLower ( ) ) ;
534+ }
535+
536+ protected virtual void ParseCabViewpoint ( STFReader stf )
537+ {
538+ stf . MustMatch ( "(" ) ;
539+ CabViewpoint = stf . ReadInt ( 0 ) ;
540+ stf . SkipRestOfBlock ( ) ;
541+ }
542+
543+
512544 }
513545 #endregion
514546
@@ -560,6 +592,9 @@ public CVCDial(STFReader stf, string basepath)
560592 ToDegree = stf . ReadFloat ( STFReader . UNITS . None , null ) ;
561593 stf . SkipRestOfBlock ( ) ;
562594 } ) ,
595+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
596+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
597+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
563598 } ) ;
564599 }
565600 }
@@ -645,7 +680,10 @@ public CVCGauge(STFReader stf, string basepath)
645680 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { DecreaseColor = ParseControlColor ( stf ) ; } ) } ) ;
646681 }
647682 } ) ,
648- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } )
683+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
684+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
685+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
686+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
649687 } ) ;
650688 }
651689 }
@@ -768,7 +806,10 @@ public CVCDigital(STFReader stf, string basepath)
768806 }
769807 } ) ,
770808 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
771- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
809+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
810+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
811+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
812+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
772813 } ) ;
773814 }
774815
@@ -829,7 +870,10 @@ public CVCDigitalClock(STFReader stf, string basepath)
829870 new STFReader . TokenProcessor ( "accuracy" , ( ) => { ParseAccuracy ( stf ) ; } ) ,
830871 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { PositiveColor = ParseControlColor ( stf ) ; } ) ,
831872 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
832- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } )
873+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
874+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
875+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
876+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
833877 } ) ;
834878 }
835879
@@ -866,6 +910,14 @@ public class CVCDiscrete : CVCWithFrames
866910 private int numPositions ;
867911 private bool canFill = true ;
868912
913+ public struct NewScreenData
914+ {
915+ public string NewScreen ;
916+ public int NewScreenDisplay ;
917+
918+ }
919+ public List < NewScreenData > NewScreens ;
920+
869921 public CVCDiscrete ( STFReader stf , string basepath , DiscreteStates discreteState )
870922 {
871923// try
@@ -999,6 +1051,10 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
9991051 _ValuesRead ++ ;
10001052 }
10011053 } ) ,
1054+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1055+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1056+ new STFReader . TokenProcessor ( "ortsnewscreenpage" , ( ) => { ParseNewScreen ( stf ) ; } ) ,
1057+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
10021058 } ) ;
10031059
10041060 // If no ACE, just don't need any fixup
@@ -1188,6 +1244,18 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
11881244// throw new STFException(stf, "Problem with NumPositions/NumValues/NumFrames/ScaleRange");
11891245// } // End of Need check the Values collection for validity
11901246 } // End of Constructor
1247+
1248+ protected void ParseNewScreen ( STFReader stf )
1249+ {
1250+ stf . MustMatch ( "(" ) ;
1251+ var newScreen = new NewScreenData ( ) ;
1252+ newScreen . NewScreen = stf . ReadString ( ) . ToLower ( ) ;
1253+ newScreen . NewScreenDisplay = stf . ReadInt ( - 1 ) ;
1254+ stf . SkipRestOfBlock ( ) ;
1255+ if ( NewScreens == null )
1256+ NewScreens = new List < NewScreenData > ( ) ;
1257+ NewScreens . Add ( newScreen ) ; ;
1258+ }
11911259 }
11921260 #endregion
11931261
@@ -1228,6 +1296,9 @@ public CVCMultiStateDisplay(STFReader stf, string basepath)
12281296 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12291297 Values . Add ( - 10000 ) ;
12301298 } ) ,
1299+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1300+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1301+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12311302 } ) ;
12321303 }
12331304 protected int ParseNumStyle ( STFReader stf )
@@ -1275,6 +1346,9 @@ public CVCAnimatedDisplay(STFReader stf, string basepath)
12751346 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12761347 Values . Add ( - 10000 ) ;
12771348 } ) ,
1349+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1350+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1351+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12781352 } ) ;
12791353 }
12801354 protected int ParseNumStyle ( STFReader stf )
@@ -1307,6 +1381,9 @@ public CVCScreen(STFReader stf, string basepath)
13071381 new STFReader . TokenProcessor ( "parameters" , ( ) => { ParseCustomParameters ( stf ) ; } ) ,
13081382 new STFReader . TokenProcessor ( "disablediflowvoltagepowersupplyoff" , ( ) => { ParseDisabledIfLowVoltagePowerSupplyOff ( stf ) ; } ) ,
13091383 new STFReader . TokenProcessor ( "disabledifcabpowersupplyoff" , ( ) => { ParseDisabledIfCabPowerSupplyOff ( stf ) ; } ) ,
1384+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1385+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1386+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
13101387 } ) ;
13111388 }
13121389 protected void ParseCustomParameters ( STFReader stf )
0 commit comments