@@ -202,6 +202,10 @@ public enum CABViewControlTypes
202202 ORTS_ELECTRIC_TRAIN_SUPPLY_COMMAND_SWITCH ,
203203 ORTS_ELECTRIC_TRAIN_SUPPLY_ON ,
204204 ORTS_2DEXTERNALWIPERS ,
205+ ORTS_GENERIC_ITEM1 ,
206+ ORTS_GENERIC_ITEM2 ,
207+ ORTS_SCREEN_SELECT ,
208+ ORTS_STATIC_DISPLAY ,
205209
206210 // TCS Controls
207211 ORTS_TCS1 ,
@@ -390,6 +394,10 @@ public class CabViewControl
390394 public double OldValue ;
391395 public string ACEFile = "" ;
392396
397+ public int Display ;
398+ public List < string > Screens ;
399+ public int CabViewpoint ;
400+
393401 public CABViewControlTypes ControlType = CABViewControlTypes . NONE ;
394402 public CABViewControlStyles ControlStyle = CABViewControlStyles . NONE ;
395403 public CABViewControlUnits Units = CABViewControlUnits . NONE ;
@@ -509,6 +517,32 @@ protected virtual float ParseRotation(STFReader stf)
509517 stf . SkipRestOfBlock ( ) ;
510518 return rotation ;
511519 }
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+
512546 }
513547 #endregion
514548
@@ -560,6 +594,9 @@ public CVCDial(STFReader stf, string basepath)
560594 ToDegree = stf . ReadFloat ( STFReader . UNITS . None , null ) ;
561595 stf . SkipRestOfBlock ( ) ;
562596 } ) ,
597+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
598+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
599+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
563600 } ) ;
564601 }
565602 }
@@ -645,7 +682,10 @@ public CVCGauge(STFReader stf, string basepath)
645682 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { DecreaseColor = ParseControlColor ( stf ) ; } ) } ) ;
646683 }
647684 } ) ,
648- 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 ) ; } ) ,
649689 } ) ;
650690 }
651691 }
@@ -768,7 +808,10 @@ public CVCDigital(STFReader stf, string basepath)
768808 }
769809 } ) ,
770810 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
771- 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 ) ; } ) ,
772815 } ) ;
773816 }
774817
@@ -829,7 +872,10 @@ public CVCDigitalClock(STFReader stf, string basepath)
829872 new STFReader . TokenProcessor ( "accuracy" , ( ) => { ParseAccuracy ( stf ) ; } ) ,
830873 new STFReader . TokenProcessor ( "controlcolour" , ( ) => { PositiveColor = ParseControlColor ( stf ) ; } ) ,
831874 new STFReader . TokenProcessor ( "ortsfont" , ( ) => { ParseFont ( stf ) ; } ) ,
832- 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 ) ; } ) ,
833879 } ) ;
834880 }
835881
@@ -866,6 +912,14 @@ public class CVCDiscrete : CVCWithFrames
866912 private int numPositions ;
867913 private bool canFill = true ;
868914
915+ public struct NewScreenData
916+ {
917+ public string NewScreen ;
918+ public int NewScreenDisplay ;
919+
920+ }
921+ public List < NewScreenData > NewScreens ;
922+
869923 public CVCDiscrete ( STFReader stf , string basepath , DiscreteStates discreteState )
870924 {
871925// try
@@ -999,6 +1053,10 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
9991053 _ValuesRead ++ ;
10001054 }
10011055 } ) ,
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 ) ; } ) ,
10021060 } ) ;
10031061
10041062 // If no ACE, just don't need any fixup
@@ -1188,6 +1246,18 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
11881246// throw new STFException(stf, "Problem with NumPositions/NumValues/NumFrames/ScaleRange");
11891247// } // End of Need check the Values collection for validity
11901248 } // 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+ }
11911261 }
11921262 #endregion
11931263
@@ -1228,6 +1298,9 @@ public CVCMultiStateDisplay(STFReader stf, string basepath)
12281298 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12291299 Values . Add ( - 10000 ) ;
12301300 } ) ,
1301+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1302+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1303+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12311304 } ) ;
12321305 }
12331306 protected int ParseNumStyle ( STFReader stf )
@@ -1275,6 +1348,9 @@ public CVCAnimatedDisplay(STFReader stf, string basepath)
12751348 for ( int i = Values . Count ; i < FramesCount ; i ++ )
12761349 Values . Add ( - 10000 ) ;
12771350 } ) ,
1351+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1352+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1353+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
12781354 } ) ;
12791355 }
12801356 protected int ParseNumStyle ( STFReader stf )
@@ -1307,6 +1383,9 @@ public CVCScreen(STFReader stf, string basepath)
13071383 new STFReader . TokenProcessor ( "parameters" , ( ) => { ParseCustomParameters ( stf ) ; } ) ,
13081384 new STFReader . TokenProcessor ( "disablediflowvoltagepowersupplyoff" , ( ) => { ParseDisabledIfLowVoltagePowerSupplyOff ( stf ) ; } ) ,
13091385 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 ) ; } ) ,
13101389 } ) ;
13111390 }
13121391 protected void ParseCustomParameters ( STFReader stf )
0 commit comments