@@ -150,7 +150,11 @@ public void Update()
150150 Throttle . Value = Percentage ( readBuffer [ 2 ] , throttle ) / 100 ;
151151 if ( ! fullRangeThrottle )
152152 DynamicBrake . Value = Percentage ( readBuffer [ 2 ] , dynamicBrake ) / 100 ;
153- TrainBrake . Value = Percentage ( readBuffer [ 3 ] , autoBrake ) / 100 ;
153+ float trainBrake = Percentage ( readBuffer [ 3 ] , autoBrake ) / 100 ;
154+ if ( trainBrake >= 1 && Percentage ( readBuffer [ 3 ] , emergencyBrake ) > 50 )
155+ TrainBrake . Value = 2 ;
156+ else
157+ TrainBrake . Value = trainBrake ;
154158 EngineBrake . Value = Percentage ( readBuffer [ 4 ] , independentBrake ) / 100 ;
155159 float a = EngineBrake . Value ;
156160 float calOff = ( 1 - a ) * bailoffDisengaged . Item1 + a * bailoffDisengaged . Item2 ;
@@ -163,27 +167,6 @@ public void Update()
163167 {
164168 if ( button is RailDriverButton rd ) rd . Update ( readBuffer ) ;
165169 }
166-
167- /* TODO: Emergency position of train brake controller is different to EBPB
168- if (TrainBrakePercent >= 100)
169- Emergency = Percentage(readBuffer[3], emergencyBrake) > 50;
170- if (IsPressed(EmergencyStopCommandUp) || IsPressed(EmergencyStopCommandDown))
171- Emergency = true;
172- */
173- /* TODO: Not every command resets alerter. Should be handled by HandleEvent
174- on TrainControlSystem elsewhere
175- // check for alerter reset
176- if (readBuffer?.Length >= 8 && readBufferHistory?.Length >= 8)
177- {
178- for (int i = 1; i <= 5; i++)
179- {
180- if (Math.Abs(readBuffer[i] - readBufferHistory[i]) > 1)
181- {
182- Changed = true;
183- break;
184- }
185- }
186- }*/
187170 }
188171 }
189172 }
0 commit comments