@@ -160,6 +160,7 @@ private static class Symbols
160160 [ Viewer . Catalog . GetString ( "Time" ) ] = Viewer . Catalog . GetString ( "TIME" ) ,
161161 [ Viewer . Catalog . GetString ( "Traction cut-off relay" ) ] = Viewer . Catalog . GetString ( "TRAC" ) ,
162162 [ Viewer . Catalog . GetString ( "Train brake" ) ] = Viewer . Catalog . GetString ( "BTRN" ) ,
163+ [ Viewer . Catalog . GetString ( "Water scoop" ) ] = Viewer . Catalog . GetString ( "WSCO" ) ,
163164 [ Viewer . Catalog . GetString ( "Wheel" ) ] = Viewer . Catalog . GetString ( "WHEL" )
164165 } ;
165166
@@ -1153,6 +1154,40 @@ void AddSeparator() => AddLabel(new ListLabel
11531154 } ) ;
11541155 }
11551156 }
1157+ AddSeparator ( ) ;
1158+ }
1159+
1160+ // Water scoop
1161+ if ( locomotive . HasWaterScoop )
1162+ {
1163+ string waterScoopIndicator , waterScoopKey ;
1164+ if ( locomotive . ScoopIsBroken )
1165+ {
1166+ if ( locomotive . IsWaterScoopDown )
1167+ {
1168+ locomotive . ToggleWaterScoop ( ) ; // Set water scoop up
1169+ }
1170+ waterScoopIndicator = Viewer . Catalog . GetString ( "Broken" ) + ColorCode [ Color . Orange ] ;
1171+ waterScoopKey = "" ;
1172+ }
1173+ else if ( locomotive . IsWaterScoopDown && ! locomotive . ScoopIsBroken )
1174+ {
1175+ waterScoopIndicator = Viewer . Catalog . GetString ( "Down" ) + ( locomotive . IsOverTrough ( ) ? ColorCode [ Color . Cyan ] : ColorCode [ Color . Orange ] ) ;
1176+ waterScoopKey = Symbols . ArrowToRight + ColorCode [ Color . Yellow ] ;
1177+ }
1178+ else
1179+ {
1180+ waterScoopIndicator = Viewer . Catalog . GetString ( "Up" ) + ColorCode [ Color . White ] ;
1181+ waterScoopKey = "" ;
1182+ }
1183+
1184+ AddLabel ( new ListLabel
1185+ {
1186+ FirstCol = Viewer . Catalog . GetString ( "Water scoop" ) ,
1187+ LastCol = waterScoopIndicator ,
1188+ KeyPressed = waterScoopKey ,
1189+ SymbolCol = ""
1190+ } ) ;
11561191 }
11571192
11581193 // Blowdown valve
@@ -1179,7 +1214,7 @@ void AddSeparator() => AddLabel(new ListLabel
11791214 AddSeparator ( ) ;
11801215 }
11811216
1182- // Booster air valve
1217+ // Booster engine
11831218 if ( locomotive is MSTSSteamLocomotive )
11841219 {
11851220 MSTSSteamLocomotive steamLocomotive6 = ( MSTSSteamLocomotive ) locomotive ;
@@ -1198,22 +1233,18 @@ void AddSeparator() => AddLabel(new ListLabel
11981233 string boosterIdleValveIndicator = "-" , boosterIdleValveKey = "" ;
11991234 string boosterLatchOnIndicator = "-" , boosterLatchOnKey = "" ;
12001235 var cutOffLess65 = train . MUReverserPercent < 65.0f ;
1201- bool moving = Math . Abs ( trainCar . SpeedMpS ) > 1 ;
1236+ bool movingTrain = Math . Abs ( trainCar . SpeedMpS ) > 0.0555556f ; // 0.2 km/h
12021237 var currentTrainInfo = train . GetTrainInfo ( ) ;
1203- var trainStopping = currentTrainInfo . projectedSpeedMpS < 1 ;
1238+ var trainStopping = currentTrainInfo . projectedSpeedMpS < 0.0277778f ; // 0.1 km/h
12041239
1205- // Disengages booster if speed is more than 34 km/h or cutOff less than 65%
1206- if ( steamLocomotive6 . SteamBoosterLatchOn && ( steamLocomotive6 . SpeedMpS > 9.4444 || ( cutOffLess65 && moving ) || locomotive . Direction == Direction . Reverse ) )
1207- {
1208- steamLocomotive6 . ToggleSteamBoosterLatch ( ) ; // Disengages booster
1209- }
12101240 // Engages booster if train is moving forward less than 19 km/h and cutoff value more than 65%
1211- else if ( ! steamLocomotive6 . SteamBoosterLatchOn && ! trainStopping && steamLocomotive6 . SpeedMpS < 5.27778 && ! cutOffLess65 && moving && locomotive . Direction == Direction . Forward )
1241+ if ( ! steamLocomotive6 . SteamBoosterLatchOn && ! trainStopping && steamLocomotive6 . SpeedMpS < 5.27778 && ! cutOffLess65 && movingTrain && locomotive . Direction == Direction . Forward )
12121242 {
12131243 steamLocomotive6 . ToggleSteamBoosterLatch ( ) ; // Engages booster
12141244 }
1215- // Disengages booster if projectedSpeedMpS < 1
1216- else if ( steamLocomotive6 . SteamBoosterLatchOn && trainStopping )
1245+ // Disengages booster if speed is more than 34 km/h or cutOff less than 65%
1246+ else if ( steamLocomotive6 . SteamBoosterLatchOn && ( steamLocomotive6 . SpeedMpS > 9.4444 || ( cutOffLess65 && movingTrain ) || locomotive . Direction == Direction . Reverse )
1247+ || ( steamLocomotive6 . SteamBoosterLatchOn && trainStopping ) ) // Disengages booster if projectedSpeedMpS < 0.1 km/h
12171248 {
12181249 steamLocomotive6 . ToggleSteamBoosterLatch ( ) ; // Disengages booster
12191250 }
@@ -1223,6 +1254,10 @@ void AddSeparator() => AddLabel(new ListLabel
12231254 {
12241255 EnabledIdleValve = true ;
12251256 }
1257+ if ( EnabledIdleValve && ! steamLocomotive6 . SteamBoosterAirOpen && ! steamLocomotive6 . SteamBoosterIdle && ! steamLocomotive6 . SteamBoosterLatchOn )
1258+ {
1259+ EnabledIdleValve = false ;
1260+ }
12261261
12271262 // SteamBoosterAirValve Ctrl+D...close/open
12281263 if ( ! steamLocomotive6 . SteamBoosterAirOpen )
@@ -1248,14 +1283,21 @@ void AddSeparator() => AddLabel(new ListLabel
12481283 // SteamBoosterIdleValve..Ctrl+B...idle/run
12491284 if ( ! steamLocomotive6 . SteamBoosterIdle )
12501285 {
1251- boosterIdleValveIndicator = Viewer . Catalog . GetString ( "Idle" ) + ColorCode [ Color . White ] ;
1286+ boosterIdleValveIndicator = Viewer . Catalog . GetString ( "Idle" ) + ColorCode [ EnabledIdleValve ? Color . White : Color . Orange ] ;
12521287 boosterIdleValveKey = "" ;
12531288 }
12541289 if ( steamLocomotive6 . SteamBoosterIdle && EnabledIdleValve )
12551290 {
12561291 boosterIdleValveIndicator = Viewer . Catalog . GetString ( "Run" ) + ColorCode [ EnabledIdleValve ? Color . Cyan : Color . Orange ] ;
12571292 boosterIdleValveKey = Symbols . ArrowToRight + ColorCode [ Color . Yellow ] ;
12581293 }
1294+ // When shut off the booster system and the air open valve is closed, we set the idle valve from the run position to idle.
1295+ if ( steamLocomotive6 . SteamBoosterIdle && ! steamLocomotive6 . SteamBoosterAirOpen )
1296+ {
1297+ steamLocomotive6 . ToggleSteamBoosterIdle ( ) ; // set to idle
1298+ boosterIdleValveIndicator = Viewer . Catalog . GetString ( "Idle" ) + ColorCode [ Color . White ] ;
1299+ boosterIdleValveKey = "" ;
1300+ }
12591301 AddLabel ( new ListLabel
12601302 {
12611303 FirstCol = Viewer . Catalog . GetString ( "Booster idle valve" ) + ColorCode [ EnabledIdleValve ? Color . White : Color . Orange ] ,
@@ -1273,7 +1315,7 @@ void AddSeparator() => AddLabel(new ListLabel
12731315 }
12741316 if ( ! steamLocomotive6 . SteamBoosterLatchOn )
12751317 {
1276- boosterLatchOnIndicator = Viewer . Catalog . GetString ( "Opened" ) + ColorCode [ Color . White ] ;
1318+ boosterLatchOnIndicator = Viewer . Catalog . GetString ( "Opened" ) + ColorCode [ EnabledIdleValve ? Color . White : Color . Orange ] ;
12771319 boosterLatchOnKey = "" ;
12781320 BoosterLocked = false ;
12791321 }
@@ -1429,21 +1471,21 @@ void AddSeparator() => AddLabel(new ListLabel
14291471 }
14301472
14311473 // Wheel
1432- if ( train . IsWheelSlip || train . IsWheelSlipWarninq || train . IsBrakeSkid )
1474+ if ( train . HuDIsWheelSlip || train . HuDIsWheelSlipWarninq || train . IsBrakeSkid )
14331475 {
14341476 wheelLabelVisible = true ;
14351477 clockWheelTime = Owner . Viewer . Simulator . ClockTime ;
14361478 }
14371479
1438- if ( train . IsWheelSlip )
1480+ if ( train . HuDIsWheelSlip )
14391481 {
14401482 AddLabel ( new ListLabel
14411483 {
14421484 FirstCol = Viewer . Catalog . GetString ( "Wheel" ) ,
14431485 LastCol = Viewer . Catalog . GetString ( "slip" ) + ColorCode [ Color . OrangeRed ] ,
14441486 } ) ;
14451487 }
1446- else if ( train . IsWheelSlipWarninq )
1488+ else if ( train . HuDIsWheelSlipWarninq )
14471489 {
14481490 AddLabel ( new ListLabel
14491491 {
0 commit comments