Ejemplo n.º 1
0
        /// <summary>
        /// Updates the specs from the loaded object
        /// </summary>
        /// <remarks>Calls only from the main UI thread.</remarks>
        internal static void UpdateSpecs()
        {
            lock (LockObj)
            {
                IsExtensionsCfg = Program.TrainManager.Trains.Length != 0;

                if (IsExtensionsCfg)
                {
                    TrainBase train = Program.TrainManager.Trains[0];
                    Specs = new NearestTrainSpecs
                    {
                        NumberOfCars  = train.NumberOfCars,
                        PowerNotches  = train.Handles.Power.MaximumNotch,
                        IsAirBrake    = train.Handles.Brake is AirBrakeHandle,
                        BrakeNotches  = train.Handles.Brake.MaximumNotch,
                        HasHoldBrake  = train.Handles.HasHoldBrake,
                        HasConstSpeed = train.Handles.HasHoldBrake
                    };
                }

                if (Status.PowerNotch > Specs.PowerNotches)
                {
                    Status.PowerNotch = Specs.PowerNotches;
                }

                if (Status.BrakeNotch > Specs.BrakeNotches)
                {
                    Status.BrakeNotch = Specs.BrakeNotches;
                }

                if (Specs.IsAirBrake || !Specs.HasHoldBrake)
                {
                    Status.HoldBrake = false;
                }

                if (!Specs.HasConstSpeed)
                {
                    Status.ConstSpeed = false;
                }

                RequiredApply = true;
            }

            formTrain.Instance?.UpdateSpecsUI();
        }
Ejemplo n.º 2
0
 static NearestTrain()
 {
     LockObj = new object();
     Specs   = new NearestTrainSpecs();
     Status  = new NearestTrainStatus();
 }