@@ -204,6 +204,8 @@ public enum CABViewControlTypes
204204 ORTS_2DEXTERNALWIPERS ,
205205 ORTS_GENERIC_ITEM1 ,
206206 ORTS_GENERIC_ITEM2 ,
207+ ORTS_SCREEN_SELECT ,
208+ ORTS_STATIC_DISPLAY ,
207209
208210 // TCS Controls
209211 ORTS_TCS1 ,
@@ -392,6 +394,10 @@ public class CabViewControl
392394 public double OldValue ;
393395 public string ACEFile = "" ;
394396
397+ public int Display ;
398+ public List < string > Screens ;
399+ public int CabViewpoint ;
400+
395401 public CABViewControlTypes ControlType = CABViewControlTypes . NONE ;
396402 public CABViewControlStyles ControlStyle = CABViewControlStyles . NONE ;
397403 public CABViewControlUnits Units = CABViewControlUnits . NONE ;
@@ -511,6 +517,32 @@ protected virtual float ParseRotation(STFReader stf)
511517 stf . SkipRestOfBlock ( ) ;
512518 return rotation ;
513519 }
520+
521+ protected virtual void ParseDisplay ( STFReader stf )
522+ {
523+ stf . MustMatch ( "(" ) ;
524+ Display = stf . ReadInt ( 0 ) ;
525+ stf . SkipRestOfBlock ( ) ;
526+ }
527+
528+ protected virtual void ParseScreen ( STFReader stf )
529+ {
530+ stf . MustMatch ( "(" ) ;
531+ var newScreen = stf . ReadString ( ) ;
532+ stf . SkipRestOfBlock ( ) ;
533+ if ( Screens == null )
534+ Screens = new List < string > ( ) ;
535+ Screens . Add ( newScreen . ToLower ( ) ) ;
536+ }
537+
538+ protected virtual void ParseCabViewpoint ( STFReader stf )
539+ {
540+ stf . MustMatch ( "(" ) ;
541+ CabViewpoint = stf . ReadInt ( 0 ) ;
542+ stf . SkipRestOfBlock ( ) ;
543+ }
544+
545+
514546 }
515547 #endregion
516548
@@ -562,6 +594,9 @@ public CVCDial(STFReader stf, string basepath)
562594 ToDegree = stf . ReadFloat ( STFReader . UNITS . None , null ) ;
563595 stf . SkipRestOfBlock ( ) ;
564596 } ) ,
597+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
598+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
599+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
565600 } ) ;
566601 }
567602 }
@@ -647,7 +682,10 @@ public CVCGauge(STFReader stf, string basepath)
647682 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { DecreaseColor = ParseControlColor ( stf ) ; } ) } ) ;
648683 }
649684 } ) ,
650- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } )
685+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
686+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
687+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
688+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
651689 } ) ;
652690 }
653691 }
@@ -770,7 +808,10 @@ public CVCDigital(STFReader stf, string basepath)
770808 }
771809 } ) ,
772810 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
773- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
811+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
812+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
813+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
814+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
774815 } ) ;
775816 }
776817
@@ -831,7 +872,10 @@ public CVCDigitalClock(STFReader stf, string basepath)
831872 new STFReader . TokenProcessor ( "accuracy" , ( ) => { ParseAccuracy ( stf ) ; } ) ,
832873 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { PositiveColor = ParseControlColor ( stf ) ; } ) ,
833874 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
834- new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } )
875+ new STFReader . TokenProcessor ( "ortsangle" , ( ) => { Rotation = ParseRotation ( stf ) ; } ) ,
876+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
877+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
878+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
835879 } ) ;
836880 }
837881
@@ -868,6 +912,14 @@ public class CVCDiscrete : CVCWithFrames
868912 private int numPositions ;
869913 private bool canFill = true ;
870914
915+ public struct NewScreenData
916+ {
917+ public string NewScreen ;
918+ public int NewScreenDisplay ;
919+
920+ }
921+ public List < NewScreenData > NewScreens ;
922+
871923 public CVCDiscrete ( STFReader stf , string basepath , DiscreteStates discreteState )
872924 {
873925// try
@@ -1001,6 +1053,10 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
10011053 _ValuesRead ++ ;
10021054 }
10031055 } ) ,
1056+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1057+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1058+ new STFReader . TokenProcessor ( "ortsnewscreenpage" , ( ) => { ParseNewScreen ( stf ) ; } ) ,
1059+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
10041060 } ) ;
10051061
10061062 // If no ACE, just don't need any fixup
@@ -1190,6 +1246,18 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
11901246// throw new STFException(stf, "Problem with NumPositions/NumValues/NumFrames/ScaleRange");
11911247// } // End of Need check the Values collection for validity
11921248 } // End of Constructor
1249+
1250+ protected void ParseNewScreen ( STFReader stf )
1251+ {
1252+ stf . MustMatch ( "(" ) ;
1253+ var newScreen = new NewScreenData ( ) ;
1254+ newScreen . NewScreen = stf . ReadString ( ) . ToLower ( ) ;
1255+ newScreen . NewScreenDisplay = stf . ReadInt ( - 1 ) ;
1256+ stf . SkipRestOfBlock ( ) ;
1257+ if ( NewScreens == null )
1258+ NewScreens = new List < NewScreenData > ( ) ;
1259+ NewScreens . Add ( newScreen ) ; ;
1260+ }
11931261 }
11941262 #endregion
11951263
@@ -1230,6 +1298,9 @@ public CVCMultiStateDisplay(STFReader stf, string basepath)
12301298 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12311299 Values . Add ( - 10000 ) ;
12321300 } ) ,
1301+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1302+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1303+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12331304 } ) ;
12341305 }
12351306 protected int ParseNumStyle ( STFReader stf )
@@ -1277,6 +1348,9 @@ public CVCAnimatedDisplay(STFReader stf, string basepath)
12771348 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12781349 Values . Add ( - 10000 ) ;
12791350 } ) ,
1351+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1352+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1353+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12801354 } ) ;
12811355 }
12821356 protected int ParseNumStyle ( STFReader stf )
@@ -1309,6 +1383,9 @@ public CVCScreen(STFReader stf, string basepath)
13091383 new STFReader . TokenProcessor ( "parameters" , ( ) => { ParseCustomParameters ( stf ) ; } ) ,
13101384 new STFReader . TokenProcessor ( "disablediflowvoltagepowersupplyoff" , ( ) => { ParseDisabledIfLowVoltagePowerSupplyOff ( stf ) ; } ) ,
13111385 new STFReader . TokenProcessor ( "disabledifcabpowersupplyoff" , ( ) => { ParseDisabledIfCabPowerSupplyOff ( stf ) ; } ) ,
1386+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1387+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1388+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
13121389 } ) ;
13131390 }
13141391 protected void ParseCustomParameters ( STFReader stf )
0 commit comments