/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">INI file</param>
        public DBEntryUnitAircraftData(INIFile ini)
        {
            int i, j;

            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = ini.GetValue <Amount>("Aircraft", "CruiseAltitude");
            CruiseSpeed    = ini.GetValue <Amount>("Aircraft", "CruiseSpeed");

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");

            RadioFrequency  = ini.GetValue <float>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");
            for (i = 0; i < PayloadTasks.GetLength(0); i++)
            {
                PayloadTasks[i] = new string[MAX_PYLONS];
                for (j = 0; j < MAX_PYLONS; j++)
                {
                    PayloadTasks[i][j] = ini.GetValue <string>("Aircraft", $"Payload.Task.{(UnitTaskPayload)i}.Pylon{j + 1:00}");
                }
            }
        }
Ejemplo n.º 2
0
 internal void Merge(DBEntryUnitAircraftData aircraftData)
 {
     Liveries     = Liveries.Union(aircraftData.Liveries).ToList();
     PayloadTasks = PayloadTasks
                    .Union(aircraftData.PayloadTasks)
                    .GroupBy(g => g.Key)
                    .ToDictionary(pair => pair.Key, pair => pair.Last().Value);
 }
Ejemplo n.º 3
0
        internal DBEntryUnitAircraftData(INIFile ini, bool custom = false)
        {
            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseAltitude")) * Toolbox.FEET_TO_METERS);
            CruiseSpeed    = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseSpeed")) * Toolbox.KNOTS_TO_METERS_PER_SECOND);

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");
            PropsLua           = ini.GetValue <string>("Aircraft", "PropsLua");

            RadioFrequency  = ini.GetValue <double>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");

            MinimumRunwayLengthFt = ini.GetValue <int>("Aircraft", "MinimumRunwayLengthFt");

            var payloads = ini.GetKeysInSection("Aircraft").Where(x => x.StartsWith("payload.task")).Select(x => x.Split('.')[2]).Distinct().ToList();

            if (!custom)
            {
                PayloadTasks.Add("default", new string[MAX_PYLONS]);
            }

            foreach (string task in payloads)
            {
                if (task != "default" || custom)
                {
                    PayloadTasks.Add(task, new string[MAX_PYLONS]);
                }
                for (var pylonIndex = 0; pylonIndex < MAX_PYLONS; pylonIndex++)
                {
                    PayloadTasks[task][pylonIndex] = ini.GetValue <string>("Aircraft", $"Payload.Task.{task}.Pylon{pylonIndex + 1:00}");
                }
            }

            RadioPresets = new List <DBEntryUnitRadioPreset>();
            for (int i = 0; i < 4; i++)
            {
                if (ini.ValueExists("Aircraft", $"Radio.Presets.{i}.Channels"))
                {
                    RadioPresets.Add(
                        new DBEntryUnitRadioPreset(
                            ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Channels"),
                            ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Modulations")));
                }
            }
            Liveries = new List <string> {
                "default"
            };
            Liveries.AddRange(ini.GetValueArray <string>("Aircraft", "Liveries"));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">INI file</param>
        public DBEntryUnitAircraftData(INIFile ini)
        {
            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseAltitude")) * Toolbox.FEET_TO_METERS);
            CruiseSpeed    = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseSpeed")) * Toolbox.KNOTS_TO_METERS_PER_SECOND);

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");
            PropsLua           = ini.GetValue <string>("Aircraft", "PropsLua");

            RadioFrequency  = ini.GetValue <float>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");
            foreach (Decade decade in Enum.GetValues(typeof(Decade)))
            {
                PayloadTasks.Add(decade, new Dictionary <UnitTaskPayload, string[]>());
                foreach (UnitTaskPayload task in Enum.GetValues(typeof(UnitTaskPayload)))
                {
                    PayloadTasks[decade].Add(task, new string[MAX_PYLONS]);
                    for (var pylonIndex = 0; pylonIndex < MAX_PYLONS; pylonIndex++)
                    {
                        PayloadTasks[decade][task][pylonIndex] = ini.GetValue <string>("Aircraft", $"Payload.{decade}.Task.{task}.Pylon{pylonIndex + 1:00}");
                    }
                }
            }
            RadioPresets = new List <RadioPreset>();
            for (int i = 0; i < 4; i++)
            {
                if (ini.ValueExists("Aircraft", $"Radio.Presets.{i}.Channels"))
                {
                    RadioPresets.Add(new RadioPreset {
                        Channels    = ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Channels"),
                        Modulations = ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Modulations")
                    });
                }
            }
        }
Ejemplo n.º 5
0
 private bool TaskPayloadExists(string task) => PayloadTasks.ContainsKey(task);