static private ApplyReverser ( Train Train, int Value, bool Relative ) : void | ||
Train | Train | The train |
Value | int | The notch to apply |
Relative | bool | Whether this is an absolute value or relative to the previous |
Résultat | void |
/// <summary> /// set reverser /// </summary> static public void SetReverser(int value) { try { TrainManager.ApplyReverser(nowControl, value, false); return; } catch (Exception ex) { } }
/// <summary> /// reserver backward /// </summary> static public void ReverserBackward() { try { TrainManager.ApplyReverser(nowControl, -1, true); TrainManager.ApplyReverser(nowControl, -1, true); return; } catch (Exception ex) { } }
/// <summary>Sets the driver handles or the virtual handles.</summary> /// <param name="handles">The handles.</param> /// <param name="virtualHandles">Whether to set the virtual handles.</param> private void SetHandles(Handles handles, bool virtualHandles) { /* * Process the handles. */ if (this.Train.Specs.SingleHandle & handles.BrakeNotch != 0) { handles.PowerNotch = 0; } /* * Process the reverser. */ if (handles.Reverser >= -1 & handles.Reverser <= 1) { if (virtualHandles) { this.Train.Specs.CurrentReverser.Actual = handles.Reverser; } else { TrainManager.ApplyReverser(this.Train, handles.Reverser, false); } } else { if (virtualHandles) { this.Train.Specs.CurrentReverser.Actual = this.Train.Specs.CurrentReverser.Driver; } this.PluginValid = false; } /* * Process the power. * */ if (handles.PowerNotch >= 0 & handles.PowerNotch <= this.Train.Specs.MaximumPowerNotch) { if (virtualHandles) { this.Train.Specs.CurrentPowerNotch.Safety = handles.PowerNotch; } else { TrainManager.ApplyNotch(this.Train, handles.PowerNotch, false, 0, true); } } else { if (virtualHandles) { this.Train.Specs.CurrentPowerNotch.Safety = this.Train.Specs.CurrentPowerNotch.Driver; } this.PluginValid = false; } // if (handles.BrakeNotch != 0) { // if (virtualHandles) { // this.Train.Specs.CurrentPowerNotch.Safety = 0; // } // } /* * Process the brakes. * */ if (virtualHandles) { this.Train.Specs.CurrentEmergencyBrake.Safety = false; this.Train.Specs.CurrentHoldBrake.Actual = false; } if (this.Train.Cars[this.Train.DriverCar].Specs.BrakeType == TrainManager.CarBrakeType.AutomaticAirBrake) { if (handles.BrakeNotch == 0) { if (virtualHandles) { this.Train.Specs.AirBrake.Handle.Safety = TrainManager.AirBrakeHandleState.Release; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyAirBrakeHandle(this.Train, TrainManager.AirBrakeHandleState.Release); } } else if (handles.BrakeNotch == 1) { if (virtualHandles) { this.Train.Specs.AirBrake.Handle.Safety = TrainManager.AirBrakeHandleState.Lap; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyAirBrakeHandle(this.Train, TrainManager.AirBrakeHandleState.Lap); } } else if (handles.BrakeNotch == 2) { if (virtualHandles) { this.Train.Specs.AirBrake.Handle.Safety = TrainManager.AirBrakeHandleState.Service; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyAirBrakeHandle(this.Train, TrainManager.AirBrakeHandleState.Release); } } else if (handles.BrakeNotch == 3) { if (virtualHandles) { this.Train.Specs.AirBrake.Handle.Safety = TrainManager.AirBrakeHandleState.Service; this.Train.Specs.CurrentEmergencyBrake.Safety = true; } else { TrainManager.ApplyAirBrakeHandle(this.Train, TrainManager.AirBrakeHandleState.Service); TrainManager.ApplyEmergencyBrake(this.Train); } } else { this.PluginValid = false; } } else { if (this.Train.Specs.HasHoldBrake) { if (handles.BrakeNotch == this.Train.Specs.MaximumBrakeNotch + 2) { if (virtualHandles) { this.Train.Specs.CurrentEmergencyBrake.Safety = true; this.Train.Specs.CurrentBrakeNotch.Safety = this.Train.Specs.MaximumBrakeNotch; } else { TrainManager.ApplyHoldBrake(this.Train, false); TrainManager.ApplyNotch(this.Train, 0, true, this.Train.Specs.MaximumBrakeNotch, false); TrainManager.ApplyEmergencyBrake(this.Train); } } else if (handles.BrakeNotch >= 2 & handles.BrakeNotch <= this.Train.Specs.MaximumBrakeNotch + 1) { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = handles.BrakeNotch - 1; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyHoldBrake(this.Train, false); TrainManager.ApplyNotch(this.Train, 0, true, handles.BrakeNotch - 1, false); } } else if (handles.BrakeNotch == 1) { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = 0; this.Train.Specs.CurrentHoldBrake.Actual = true; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyNotch(this.Train, 0, true, 0, false); TrainManager.ApplyHoldBrake(this.Train, true); } } else if (handles.BrakeNotch == 0) { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = 0; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyNotch(this.Train, 0, true, 0, false); TrainManager.ApplyHoldBrake(this.Train, false); } } else { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = this.Train.Specs.CurrentBrakeNotch.Driver; } this.PluginValid = false; } } else { if (handles.BrakeNotch == this.Train.Specs.MaximumBrakeNotch + 1) { if (virtualHandles) { this.Train.Specs.CurrentEmergencyBrake.Safety = true; this.Train.Specs.CurrentBrakeNotch.Safety = this.Train.Specs.MaximumBrakeNotch; } else { TrainManager.ApplyHoldBrake(this.Train, false); TrainManager.ApplyEmergencyBrake(this.Train); } } else if (handles.BrakeNotch >= 0 & handles.BrakeNotch <= this.Train.Specs.MaximumBrakeNotch | this.Train.Specs.CurrentBrakeNotch.DelayedChanges.Length == 0) { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = handles.BrakeNotch; } else { TrainManager.UnapplyEmergencyBrake(this.Train); TrainManager.ApplyNotch(this.Train, 0, true, handles.BrakeNotch, false); } } else { if (virtualHandles) { this.Train.Specs.CurrentBrakeNotch.Safety = this.Train.Specs.CurrentBrakeNotch.Driver; } this.PluginValid = false; } } } /* * Process the const speed system. * */ this.Train.Specs.CurrentConstSpeed = handles.ConstSpeed & this.Train.Specs.HasConstSpeed; }