@@ -202,6 +202,8 @@ public enum CABViewControlTypes
202
202
ORTS_ELECTRIC_TRAIN_SUPPLY_COMMAND_SWITCH ,
203
203
ORTS_ELECTRIC_TRAIN_SUPPLY_ON ,
204
204
ORTS_2DEXTERNALWIPERS ,
205
+ ORTS_SCREEN_SELECT ,
206
+ ORTS_STATIC_DISPLAY ,
205
207
206
208
// TCS Controls
207
209
ORTS_TCS1 ,
@@ -390,6 +392,10 @@ public class CabViewControl
390
392
public double OldValue ;
391
393
public string ACEFile = "" ;
392
394
395
+ public int Display ;
396
+ public List < string > Screens ;
397
+ public int CabViewpoint ;
398
+
393
399
public CABViewControlTypes ControlType = CABViewControlTypes . NONE ;
394
400
public CABViewControlStyles ControlStyle = CABViewControlStyles . NONE ;
395
401
public CABViewControlUnits Units = CABViewControlUnits . NONE ;
@@ -509,6 +515,32 @@ protected virtual float ParseRotation(STFReader stf)
509
515
stf . SkipRestOfBlock ( ) ;
510
516
return rotation ;
511
517
}
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
+
512
544
}
513
545
#endregion
514
546
@@ -560,6 +592,9 @@ public CVCDial(STFReader stf, string basepath)
560
592
ToDegree = stf . ReadFloat ( STFReader . UNITS . None , null ) ;
561
593
stf . SkipRestOfBlock ( ) ;
562
594
} ) ,
595
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
596
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
597
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
563
598
} ) ;
564
599
}
565
600
}
@@ -645,7 +680,10 @@ public CVCGauge(STFReader stf, string basepath)
645
680
new STFReader . TokenProcessor ( "controlcolour" , ( ) => { DecreaseColor = ParseControlColor ( stf ) ; } ) } ) ;
646
681
}
647
682
} ) ,
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 ) ; } ) ,
649
687
} ) ;
650
688
}
651
689
}
@@ -768,7 +806,10 @@ public CVCDigital(STFReader stf, string basepath)
768
806
}
769
807
} ) ,
770
808
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 ) ; } ) ,
772
813
} ) ;
773
814
}
774
815
@@ -829,7 +870,10 @@ public CVCDigitalClock(STFReader stf, string basepath)
829
870
new STFReader . TokenProcessor ( "accuracy" , ( ) => { ParseAccuracy ( stf ) ; } ) ,
830
871
new STFReader . TokenProcessor ( "controlcolour" , ( ) => { PositiveColor = ParseControlColor ( stf ) ; } ) ,
831
872
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 ) ; } ) ,
833
877
} ) ;
834
878
}
835
879
@@ -866,6 +910,14 @@ public class CVCDiscrete : CVCWithFrames
866
910
private int numPositions ;
867
911
private bool canFill = true ;
868
912
913
+ public struct NewScreenData
914
+ {
915
+ public string NewScreen ;
916
+ public int NewScreenDisplay ;
917
+
918
+ }
919
+ public List < NewScreenData > NewScreens ;
920
+
869
921
public CVCDiscrete ( STFReader stf , string basepath , DiscreteStates discreteState )
870
922
{
871
923
// try
@@ -999,6 +1051,10 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
999
1051
_ValuesRead ++ ;
1000
1052
}
1001
1053
} ) ,
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 ) ; } ) ,
1002
1058
} ) ;
1003
1059
1004
1060
// If no ACE, just don't need any fixup
@@ -1188,6 +1244,18 @@ public CVCDiscrete(STFReader stf, string basepath, DiscreteStates discreteState)
1188
1244
// throw new STFException(stf, "Problem with NumPositions/NumValues/NumFrames/ScaleRange");
1189
1245
// } // End of Need check the Values collection for validity
1190
1246
} // 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
+ }
1191
1259
}
1192
1260
#endregion
1193
1261
@@ -1228,6 +1296,9 @@ public CVCMultiStateDisplay(STFReader stf, string basepath)
1228
1296
for ( int i = Values . Count ; i < FramesCount ; i ++ )
1229
1297
Values . Add ( - 10000 ) ;
1230
1298
} ) ,
1299
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1300
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1301
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
1231
1302
} ) ;
1232
1303
}
1233
1304
protected int ParseNumStyle ( STFReader stf )
@@ -1275,6 +1346,9 @@ public CVCAnimatedDisplay(STFReader stf, string basepath)
1275
1346
for ( int i = Values . Count ; i < FramesCount ; i ++ )
1276
1347
Values . Add ( - 10000 ) ;
1277
1348
} ) ,
1349
+ new STFReader . TokenProcessor ( "ortsdisplay" , ( ) => { ParseDisplay ( stf ) ; } ) ,
1350
+ new STFReader . TokenProcessor ( "ortsscreenpage" , ( ) => { ParseScreen ( stf ) ; } ) ,
1351
+ new STFReader . TokenProcessor ( "ortscabviewpoint" , ( ) => { ParseCabViewpoint ( stf ) ; } ) ,
1278
1352
} ) ;
1279
1353
}
1280
1354
protected int ParseNumStyle ( STFReader stf )
@@ -1307,6 +1381,9 @@ public CVCScreen(STFReader stf, string basepath)
1307
1381
new STFReader . TokenProcessor ( "parameters" , ( ) => { ParseCustomParameters ( stf ) ; } ) ,
1308
1382
new STFReader . TokenProcessor ( "disablediflowvoltagepowersupplyoff" , ( ) => { ParseDisabledIfLowVoltagePowerSupplyOff ( stf ) ; } ) ,
1309
1383
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 ) ; } ) ,
1310
1387
} ) ;
1311
1388
}
1312
1389
protected void ParseCustomParameters ( STFReader stf )
0 commit comments