@@ -204,6 +204,8 @@ public enum CABViewControlTypes
204
204
ORTS_2DEXTERNALWIPERS ,
205
205
ORTS_GENERIC_ITEM1 ,
206
206
ORTS_GENERIC_ITEM2 ,
207
+ ORTS_SCREEN_SELECT ,
208
+ ORTS_STATIC_DISPLAY ,
207
209
208
210
// TCS Controls
209
211
ORTS_TCS1 ,
@@ -392,6 +394,10 @@ public class CabViewControl
392
394
public double OldValue ;
393
395
public string ACEFile = "" ;
394
396
397
+ public int Display ;
398
+ public List < string > Screens ;
399
+ public int CabViewpoint ;
400
+
395
401
public CABViewControlTypes ControlType = CABViewControlTypes . NONE ;
396
402
public CABViewControlStyles ControlStyle = CABViewControlStyles . NONE ;
397
403
public CABViewControlUnits Units = CABViewControlUnits . NONE ;
@@ -511,6 +517,32 @@ protected virtual float ParseRotation(STFReader stf)
511
517
stf . SkipRestOfBlock ( ) ;
512
518
return rotation ;
513
519
}
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
+
514
546
}
515
547
#endregion
516
548
@@ -562,6 +594,9 @@ public CVCDial(STFReader stf, string basepath)
562
594
ToDegree = stf . ReadFloat ( STFReader . UNITS . None , null ) ;
563
595
stf . SkipRestOfBlock ( ) ;
564
596
} ) ,
597
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
598
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
599
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
565
600
} ) ;
566
601
}
567
602
}
@@ -647,7 +682,10 @@ public CVCGauge(STFReader stf, string basepath)
647
682
new STFReader . TokenProcessor ( "controlcolour" , ( ) => { DecreaseColor = ParseControlColor ( stf ) ; } ) } ) ;
648
683
}
649
684
} ) ,
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 ) ; } ) ,
651
689
} ) ;
652
690
}
653
691
}
@@ -770,7 +808,10 @@ public CVCDigital(STFReader stf, string basepath)
770
808
}
771
809
} ) ,
772
810
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 ) ; } ) ,
774
815
} ) ;
775
816
}
776
817
@@ -831,7 +872,10 @@ public CVCDigitalClock(STFReader stf, string basepath)
831
872
new STFReader . TokenProcessor ( "accuracy" , ( ) => { ParseAccuracy ( stf ) ; } ) ,
832
873
new STFReader . TokenProcessor ( "controlcolour" , ( ) => { PositiveColor = ParseControlColor ( stf ) ; } ) ,
833
874
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 ) ; } ) ,
835
879
} ) ;
836
880
}
837
881
@@ -868,6 +912,14 @@ public class CVCDiscrete : CVCWithFrames
868
912
private int numPositions ;
869
913
private bool canFill = true ;
870
914
915
+ public struct NewScreenData
916
+ {
917
+ public string NewScreen ;
918
+ public int NewScreenDisplay ;
919
+
920
+ }
921
+ public List < NewScreenData > NewScreens ;
922
+
871
923
public CVCDiscrete ( STFReader stf , string basepath , DiscreteStates discreteState )
872
924
{
873
925
// try
@@ -1001,6 +1053,10 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
1001
1053
_ValuesRead ++ ;
1002
1054
}
1003
1055
} ) ,
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 ) ; } ) ,
1004
1060
} ) ;
1005
1061
1006
1062
// If no ACE, just don't need any fixup
@@ -1190,6 +1246,18 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
1190
1246
// throw new STFException(stf, "Problem with NumPositions/NumValues/NumFrames/ScaleRange");
1191
1247
// } // End of Need check the Values collection for validity
1192
1248
} // 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
+ }
1193
1261
}
1194
1262
#endregion
1195
1263
@@ -1230,6 +1298,9 @@ public CVCMultiStateDisplay(STFReader stf, string basepath)
1230
1298
for ( int i = Values . Count ; i < FramesCount ; i ++ )
1231
1299
Values . Add ( - 10000 ) ;
1232
1300
} ) ,
1301
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1302
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1303
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
1233
1304
} ) ;
1234
1305
}
1235
1306
protected int ParseNumStyle ( STFReader stf )
@@ -1277,6 +1348,9 @@ public CVCAnimatedDisplay(STFReader stf, string basepath)
1277
1348
for ( int i = Values . Count ; i < FramesCount ; i ++ )
1278
1349
Values . Add ( - 10000 ) ;
1279
1350
} ) ,
1351
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1352
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1353
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
1280
1354
} ) ;
1281
1355
}
1282
1356
protected int ParseNumStyle ( STFReader stf )
@@ -1309,6 +1383,9 @@ public CVCScreen(STFReader stf, string basepath)
1309
1383
new STFReader . TokenProcessor ( "parameters" , ( ) => { ParseCustomParameters ( stf ) ; } ) ,
1310
1384
new STFReader . TokenProcessor ( "disablediflowvoltagepowersupplyoff" , ( ) => { ParseDisabledIfLowVoltagePowerSupplyOff ( stf ) ; } ) ,
1311
1385
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 ) ; } ) ,
1312
1389
} ) ;
1313
1390
}
1314
1391
protected void ParseCustomParameters ( STFReader stf )
0 commit comments