TryGetDouble() public method

public TryGetDouble ( string key ) : double
key string
return double
Exemplo n.º 1
0
        public rFactorCarAerodynamics(IniScanner hdv)
        {
            _hdv = hdv;

            if (_hdv.Data.ContainsKey("FRONTWING"))
            {
                List<double> fw_factor = new List<double>();
                foreach (string d in _hdv.TryGetData("FRONTWING", "FWDragParams"))
                    fw_factor.Add(double.Parse(d));

                Drag_FrontWing = new Polynomial(fw_factor);
            }
            if (_hdv.Data.ContainsKey("REARWING"))
            {
                List<double> fw_factor = new List<double>();
                foreach (string d in _hdv.TryGetData("REARWING", "RWDragParams"))
                    fw_factor.Add(double.Parse(d));

                Drag_RearWing = new Polynomial(fw_factor);
            }
            if (_hdv.Data.ContainsKey("LEFTFENDER"))
            {
                List<double> fw_factor = new List<double>();
                foreach (string d in _hdv.TryGetData("LEFTFENDER", "FenderDragParams"))
                    fw_factor.Add(double.Parse(d));

                Drag_LeftFender = new Polynomial(fw_factor);
            }
            if (_hdv.Data.ContainsKey("RIGHTFENDER"))
            {
                List<double> fw_factor = new List<double>();
                foreach (string d in _hdv.TryGetData("RIGHTFENDER", "FenderDragParams"))
                    fw_factor.Add(double.Parse(d));

                Drag_RightFender = new Polynomial(fw_factor);
            }

            Drag_Body = hdv.TryGetDouble("BODYAERO", "BodyDragBase");
            if (Drag_Body == 0)
                Drag_Body = double.Parse(hdv.TryGetData("BODYAREO", "BodyDragBase")[0]);
            Drag_BodyHeightAvg =  hdv.TryGetDouble("BODYAREO", "BodyDragHeightAvg");
            Drag_BodyHeightDiff =hdv.TryGetDouble("BODYAREO", "BodyDragHeightDiff");

            Drag_Radiator = new Polynomial(0,hdv.TryGetDouble("BODYAREO", "RadiatorDrag"));
            Drag_BrakesDuct = new Polynomial(0,hdv.TryGetDouble("BODYAREO", "BrakeDuctDrag"));
        }
Exemplo n.º 2
0
        public rFactorCarEngine(string file, IniScanner mHdv)
        {
            EngineTorque_Min = new Dictionary<double, double>();
            EngineTorque_Max = new Dictionary<double, double>();

            // Read the engine files.
            scanner = new IniScanner{IniFile = file};
            scanner.FireEventsForKeys = new List<string>();
            scanner.FireEventsForKeys.Add("Main.rpmtorque");
            scanner.HandleCustomKeys += new Signal(HandleEngineLine);
            scanner.Read();

            _file = file;
            string[] rpm_idle = scanner.TryGetData("Main", "IdleRPMLogic");
            string[] rpm_max = scanner.TryGetData("Main", "RevLimitRange");
            _maxRpm = Convert.ToDouble(rpm_max[0]) + Convert.ToDouble(rpm_max[2]) *Convert.ToDouble(rpm_max[1]); // With maximum limits.
            _idleRpm = Convert.ToDouble(rpm_idle[0]) + Convert.ToDouble(rpm_idle[1]);
            _idleRpm /= 2.0;

            _inertia = scanner.TryGetDouble("EngineInertia");

            // TODO: add more data like cooling, radiator, etc.

            // Engine modes.

            string[] mode_range = scanner.TryGetData("Main", "EngineBoostRange");
            string[] mode_effects = scanner.TryGetData("Main", "BoostEffects");

            // Is there any EngineBoost defined?
            if (mode_range.Length == 3)
            {
                modes = (int)Convert.ToDouble(mode_range[2]);
                mode_rpm = Convert.ToDouble(mode_effects[0]);
                mode_fuel = Convert.ToDouble(mode_effects[1]);
                mode_wear = Convert.ToDouble(mode_effects[2]);
                mode_torque = scanner.TryGetDouble("BoostTorque");
                mode_power = scanner.TryGetDouble("BoostPower");
            }
            else modes = 1;

            // RAM
            string[] ram_effects = scanner.TryGetData("Main", "RamEffects");
            if (ram_effects.Length == 4)
            {
                ram_torque = Convert.ToDouble(ram_effects[0]);
                ram_power = Convert.ToDouble(ram_effects[1]);
                ram_fuel = Convert.ToDouble(ram_effects[2]);
                ram_wear = Convert.ToDouble(ram_effects[3]);
            }

            _maxRpmMode = new Dictionary<int, double>();
            _engineModes = new Dictionary<int, string>();
            for(int i = 1; i <= modes; i++)
            {
                _engineModes.Add(i,"Mode " + i);
                _maxRpmMode.Add(i, mode_rpm * i + MaxRPM);
            }
        }