/// <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}"); } } }
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); }
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")); }
/// <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") }); } } }
private bool TaskPayloadExists(string task) => PayloadTasks.ContainsKey(task);