/// <summary>
        /// Loads data required by this definition.
        /// </summary>
        /// <param name="ini">INI file to load definition from.</param>
        /// <returns>True is successful, false if an error happened.</returns>
        protected override bool OnLoad(INIFile ini)
        {
            int i;

            // [Theater] section
            DCSID               = ini.GetValue <string>("Theater", "DCSID");
            DefaultMapCenter    = ini.GetValue <Coordinates>("Theater", "DefaultMapCenter");
            RequiredModules     = ini.GetValueArray <string>("Theater", "RequiredModules");
            MagneticDeclination = ini.GetValue <float>("Theater", "MagneticDeclination");

            // [Daytime] section
            DayTime = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                DayTime[i] = ini.GetValue <MinMaxI>("Daytime", ((Month)i).ToString());
            }

            // [Temperature] section
            Temperature = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                Temperature[i] = ini.GetValue <MinMaxI>("Temperature", ((Month)i).ToString());
            }

            // [Weather] section
            Weather = new DefinitionTheaterWeather[HQTools.EnumCount <Weather>() - 1]; // -1 because we don't want "Random"
            for (i = 0; i < Weather.Length; i++)
            {
                Weather[i] = new DefinitionTheaterWeather(ini, ((Weather)i).ToString());
            }

            // [Wind] section
            Wind = new DefinitionTheaterWind[HQTools.EnumCount <Wind>() - 1]; // -1 because we don't want "Auto"
            for (i = 0; i < Wind.Length; i++)
            {
                Wind[i] = new DefinitionTheaterWind(ini, ((Wind)i).ToString());
            }

            // [Airbases] section
            Airbases = new DefinitionTheaterAirbase[ini.GetTopLevelKeysInSection("Airbases").Length];
            i        = 0;
            foreach (string k in ini.GetTopLevelKeysInSection("Airbases"))
            {
                Airbases[i] = new DefinitionTheaterAirbase(ini, k); i++;
            }

            // [SpawnPoints] section
            SpawnPoints = new DefinitionTheaterSpawnPoint[ini.GetKeysInSection("SpawnPoints").Length];
            i           = 0;
            foreach (string k in ini.GetKeysInSection("SpawnPoints"))
            {
                SpawnPoints[i] = new DefinitionTheaterSpawnPoint(ini, k); i++;
            }

            ResetUsedSpawnPoints();

            return(true);
        }
        /// <summary>
        /// Loads the template from an HQT file.
        /// </summary>
        /// <param name="filePath">The path of the file to load from.</param>
        /// <returns>True if everything went right, false if an error happened.</returns>
        public bool LoadFromFile(string filePath)
        {
            Clear(false);

            using (INIFile ini = new INIFile(filePath))
            {
                BriefingDescription = ini.GetValue("Settings", "Briefing.Description", BriefingDescription);
                BriefingName        = ini.GetValue("Settings", "Briefing.Name", BriefingName);
                BriefingUnits       = ini.GetValue("Settings", "Briefing.Units", BriefingUnits);

                ContextCoalitionBlue       = ini.GetValue("Settings", "Context.Coalition.Blue", ContextCoalitionBlue);
                ContextCoalitionRed        = ini.GetValue("Settings", "Context.Coalition.Red", ContextCoalitionRed);
                ContextCountriesCoalitions = ini.GetValue("Settings", "Context.CountriesCoalitions", ContextCountriesCoalitions);
                ContextPlayerCoalition     = ini.GetValue("Settings", "Context.PlayerCoalition", ContextPlayerCoalition);
                ContextTheater             = ini.GetValue("Settings", "Context.Theater", ContextTheater);
                ContextTimePeriod          = ini.GetValue("Settings", "Context.TimePeriod", ContextTimePeriod);

                EnvironmentSeason    = ini.GetValue("Settings", "Environment.Season", EnvironmentSeason);
                EnvironmentTimeOfDay = ini.GetValue("Settings", "Environment.TimeOfDay", EnvironmentTimeOfDay);
                EnvironmentWeather   = ini.GetValue("Settings", "Environment.Weather", EnvironmentWeather);
                EnvironmentWind      = ini.GetValue("Settings", "Environment.Wind", EnvironmentWind);

                ObjectiveCount    = ini.GetValue("Settings", "Objective.Count", ObjectiveCount);
                ObjectiveDistance = ini.GetValue("Settings", "Objective.Distance", ObjectiveDistance);
                ObjectiveType     = ini.GetValue("Settings", "Objective.Type", ObjectiveType);

                List <MissionTemplatePlayerFlightGroup> playerFlightGroupsList = new List <MissionTemplatePlayerFlightGroup>();
                foreach (string k in ini.GetKeysInSection("FlightGroups"))
                {
                    playerFlightGroupsList.Add(new MissionTemplatePlayerFlightGroup(ini, "FlightGroups", k));
                }
                FlightPackagePlayers       = playerFlightGroupsList.ToArray();
                FlightPackageAICAP         = ini.GetValue("Settings", "FlightPackage.AI.CAP", FlightPackageAICAP);
                FlightPackageAICAP         = ini.GetValue("Settings", "FlightPackage.AI.SEAD", FlightPackageAISEAD);
                FlightPackageSupportAWACS  = ini.GetValue("Settings", "FlightPackage.Support.AWACS", FlightPackageSupportAWACS);
                FlightPackageSupportTanker = ini.GetValue("Settings", "FlightPackage.Support.Tanker", FlightPackageSupportTanker);

                PreferencesEnemiesOnF10Map = ini.GetValue("Settings", "Preferences.EnemiesOnF10Map", PreferencesEnemiesOnF10Map);
                PreferencesExtraWaypoints  = ini.GetValue("Settings", "Preferences.ExtraWaypoints", PreferencesExtraWaypoints);
                PreferencesForceClientInSP = ini.GetValue("Settings", "Preferences.ForceClientInSP", PreferencesForceClientInSP);
                PreferencesLanguage        = ini.GetValue("Settings", "Preferences.Language", PreferencesLanguage);

                RealismAllowExternalViews = ini.GetValue("Settings", "Realism.AllowExternalViews", RealismAllowExternalViews);
                RealismBirdStrikes        = ini.GetValue("Settings", "Realism.BirdStrikes", RealismBirdStrikes);
                RealismRandomFailures     = ini.GetValue("Settings", "Realism.RandomFailures", RealismRandomFailures);

                SituationEnemyAirDefense    = ini.GetValue("Settings", "Situation.Enemy.AirDefense", SituationEnemyAirDefense);
                SituationEnemyCAP           = ini.GetValue("Settings", "Situation.Enemy.CAP", SituationEnemyCAP);
                SituationFriendlyAirDefense = ini.GetValue("Settings", "Situation.Friendly.AirDefense", SituationFriendlyAirDefense);
                SituationFriendlyCAP        = ini.GetValue("Settings", "Situation.Friendly.CAP", SituationFriendlyCAP);

                SkillEnemyAir       = ini.GetValue("Settings", "Skill.Enemy.Air", SkillEnemyAir);
                SkillEnemyGround    = ini.GetValue("Settings", "Skill.Enemy.Ground", SkillEnemyGround);
                SkillFriendlyAir    = ini.GetValue("Settings", "Skill.Friendly.Air", SkillFriendlyAir);
                SkillFriendlyGround = ini.GetValue("Settings", "Skill.Friendly.Ground", SkillFriendlyGround);
            }

            return(true);
        }
Exemplo n.º 3
0
        protected override bool OnLoad(string iniFilePath)
        {
            var ini = new INIFile(iniFilePath);

            // Unit info
            DCSIDs = (from string u in ini.GetValueArray <string>("Unit", "DCSID") select u.Trim()).ToArray();
            if (DCSIDs.Length < 1)
            {
                BriefingRoom.PrintToLog($"Unit {ID} contains no DCS unit ID, unit was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }
            Families = ini.GetValueArray <UnitFamily>("Unit", "Families");
            if (Families.Length == 0)
            {
                BriefingRoom.PrintToLog($"Unit {ID} has no family, unit was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }
            // Make sure all unit families belong to same category (unit cannot be a helicopter and a ground vehicle at the same time, for instance)
            Families = (from UnitFamily f in Families where f.GetUnitCategory() == Category select f).Distinct().ToArray();
            ExtraLua = ini.GetValue <string>("Unit", "ExtraLua").Trim();
            if (!string.IsNullOrEmpty(ExtraLua) && !ExtraLua.EndsWith(","))
            {
                ExtraLua += ",";
            }
            Flags             = ini.GetValueArrayAsEnumFlags <DBEntryUnitFlags>("Unit", "Flags");
            OffsetCoordinates = (from string s in ini.GetValueArray <string>("Unit", "Offset.Coordinates", ';') select new Coordinates(s)).ToArray();
            OffsetHeading     = ini.GetValueArray <double>("Unit", "Offset.Heading");
            Shape             = ini.GetValueArray <string>("Unit", "Shape");
            RequiredMod       = ini.GetValue <string>("Unit", "RequiredMod");

            AircraftData = new DBEntryUnitAircraftData();

            // Load the list of operators
            Operators = new Dictionary <Country, Decade[]>();
            foreach (string k in ini.GetKeysInSection("Operators"))
            {
                if (!Enum.TryParse(k, true, out Country country))
                {
                    BriefingRoom.PrintToLog($"Country {k} in unit {ID} doesn't exist.", LogMessageErrorLevel.Warning);
                    continue;
                }

                if (Operators.ContainsKey(country))
                {
                    continue;
                }
                Operators.Add(country, ini.GetValueArrayAsMinMaxEnum <Decade>("Operators", k));
            }

            if (IsAircraft)                                // Load aircraft-specific data, if required
            {
                DCSIDs       = new string[] { DCSIDs[0] }; // Aircraft can not have multiple unit types in their group
                AircraftData = new DBEntryUnitAircraftData(ini, iniFilePath.Contains(BRPaths.CUSTOMDATABASE));
            }

            return(true);
        }
Exemplo n.º 4
0
        protected override bool OnLoad(string iniFilePath)
        {
            var ini = new INIFile(iniFilePath);

            Theater = ini.GetValue <string>("Situation", "Theater").ToLowerInvariant();

            RedCoordinates = new List <Coordinates>();
            foreach (string key in ini.GetKeysInSection("RedCoordinates"))
            {
                RedCoordinates.Add(ini.GetValue <Coordinates>("RedCoordinates", key));
            }

            BlueCoordinates = new List <Coordinates>();
            foreach (string key in ini.GetKeysInSection("BlueCoordinates"))
            {
                BlueCoordinates.Add(ini.GetValue <Coordinates>("BlueCoordinates", key));
            }

            if (ini.GetSections().Contains("nospawncoordinates"))
            {
                NoSpawnCoordinates = new List <Coordinates>();
                foreach (string key in ini.GetKeysInSection("NoSpawnCoordinates"))
                {
                    NoSpawnCoordinates.Add(ini.GetValue <Coordinates>("NoSpawnCoordinates", key));
                }
            }

            if (ini.GetSections().Contains("briefingdescription"))
            {
                BriefingDescriptions = new List <string>();
                foreach (string key in ini.GetKeysInSection("BriefingDescription"))
                {
                    BriefingDescriptions.Add(ini.GetValue <string>("BriefingDescription", key));
                }
            }

            if (!Database.Instance.EntryExists <DBEntryTheater>(Theater))
            {
                throw new Exception($"Situation \"{ID}\" located on non-existing theater \"{Theater}\".");
            }

            return(true);
        }
Exemplo n.º 5
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"));
        }
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>

        protected override bool OnLoad(string iniFilePath)
        {
            using (INIFile ini = new INIFile(iniFilePath))
            {
                // Unit info
                DCSIDs = (from string u in ini.GetValueArray <string>("Unit", "DCSID") select u.Trim()).ToArray();
                if (DCSIDs.Length < 1)
                {
                    DebugLog.Instance.WriteLine($"Unit {ID} contains no DCS unit ID, unit was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }
                Families = ini.GetValueArray <UnitFamily>("Unit", "Families");
                if (Families.Length == 0)
                {
                    DebugLog.Instance.WriteLine($"Unit {ID} has no family, unit was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }
                // Make sure all unit families belong to same category (unit cannot be a helicopter and a ground vehicle at the same time, for instance)
                Families = (from UnitFamily f in Families where Toolbox.GetUnitCategoryFromUnitFamily(f) == Category select f).Distinct().ToArray();
                ExtraLua = ini.GetValue <string>("Unit", "ExtraLua").Trim();
                if (!string.IsNullOrEmpty(ExtraLua) && !ExtraLua.EndsWith(","))
                {
                    ExtraLua += ",";
                }
                Flags             = ini.GetValueArrayAsEnumFlags <DBEntryUnitFlags>("Unit", "Flags");
                OffsetCoordinates = (from string s in ini.GetValueArray <string>("Unit", "Offset.Coordinates", ';') select new Coordinates(s)).ToArray();
                OffsetHeading     = ini.GetValueArray <double>("Unit", "Offset.Heading");
                RequiredMod       = ini.GetValue <string>("Unit", "RequiredMod");

                AircraftData = new DBEntryUnitAircraftData();

                // Load the list of operators
                Operators = new Dictionary <string, Decade[]>(StringComparer.InvariantCultureIgnoreCase);
                foreach (string k in ini.GetKeysInSection("Operators"))
                {
                    if (Operators.ContainsKey(k))
                    {
                        continue;
                    }
                    Operators.Add(k, ini.GetValueArrayAsMinMaxEnum <Decade>("Operators", k));
                }

                if (IsAircraft)                                // Load aircraft-specific data, if required
                {
                    DCSIDs       = new string[] { DCSIDs[0] }; // Aircraft can not have multiple unit types in their group
                    AircraftData = new DBEntryUnitAircraftData(ini);
                }
            }

            return(true);
        }
Exemplo n.º 7
0
 internal void LoadFromFile(INIFile ini, string section, string key)
 {
     Features       = Database.Instance.CheckIDs <DBEntryFeatureObjective>(ini.GetValueArray <string>(section, $"{key}.Features")).ToList();
     Options        = ini.GetValueArray <ObjectiveOption>(section, $"{key}.Options").ToList();
     Preset         = ini.GetValue <string>(section, $"{key}.Preset");
     Target         = ini.GetValue <string>(section, $"{key}.Target");
     TargetBehavior = ini.GetValue <string>(section, $"{key}.TargetBehavior");
     TargetCount    = ini.GetValue <Amount>(section, $"{key}.TargetCount");
     Task           = ini.GetValue <string>(section, $"{key}.Task");
     foreach (var subKey in ini.GetKeysInSection(section)
              .Where(x => x.Contains(key))
              .Select(x => x.Split(".")[1])
              .Where(x => x.Contains("subtask"))
              .Distinct().ToList())
     {
         SubTasks.Add(new MissionTemplateSubTask(ini, section, $"{key}.{subKey}"));
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="filePath">Path to the Preferences.ini file.</param>
        public Preferences(string filePath)
        {
            using (INIFile ini = new INIFile(filePath))
            {
                // Load common settings
                BuildNodes              = ini.GetValue("Options", "BuildNodes", false);
                Doom1Format             = ini.GetValue("Options", "Doom1Format", false);
                Episode                 = Math.Max(1, Math.Min(9, ini.GetValue("Options", "Episode", 1)));
                GenerateEntranceAndExit = ini.GetValue("Options", "GenerateEntranceAndExit", true);
                GenerateThings          = ini.GetValue("Options", "GenerateThings", true);

                // Load things
                ThingsTypes = new int[THINGS_CATEGORY_COUNT][];
                ThingsCount = new int[THINGS_CATEGORY_COUNT][];
                for (int i = 0; i < THINGS_CATEGORY_COUNT; i++)
                {
                    ThingsTypes[i] = ini.GetValueArray <int>("Things", $"Types.{(ThingCategory)i}");
                    ThingsCount[i] = ini.GetValueArray <int>("Things", $"Count.{(ThingCategory)i}");
                    Array.Resize(ref ThingsCount[i], 2);
                    ThingsCount[i] = new int[] { Math.Min(ThingsCount[i][0], ThingsCount[i][1]), Math.Max(ThingsCount[i][0], ThingsCount[i][1]) };
                }

                // Load themes. Default theme is loaded first so it can't be overriden.
                Themes = new Dictionary <int, PreferencesTheme>
                {
                    { DEFAULT_THEME_COLOR, new PreferencesTheme(ini, "Theme.Default") }
                };

                foreach (string theme in ini.GetKeysInSection("Themes"))
                {
                    Color?c = Toolbox.GetColorFromString(ini.GetValue <string>("Themes", theme));
                    if (!c.HasValue)
                    {
                        continue;
                    }
                    if (Themes.ContainsKey(c.Value.ToArgb()))
                    {
                        continue;
                    }

                    Themes.Add(c.Value.ToArgb(), new PreferencesTheme(ini, $"Theme.{theme}"));
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Static Main() method.
        /// </summary>
        private static void Main()
        {
#if DEBUG
            INIFile ini = new INIFile(@"..\Release\demo.ini");
#else
            INIFile ini = new INIFile("demo.ini");
#endif

            Console.WriteLine("FILE MAP");
            Console.WriteLine("========");
            Console.WriteLine("- INI file sections: " + string.Join(",", ini.GetSections()));
            Console.WriteLine("- INI file sections (including abstract sections): " + string.Join(",", ini.GetSections(true)));
            Console.WriteLine();
            foreach (string s in ini.GetSections())
            {
                Console.WriteLine($"[{s.ToUpperInvariant()}]");
                foreach (string k in ini.GetKeysInSection(s))
                {
                    Console.WriteLine("- " + k);
                }
                Console.WriteLine();
            }

            Console.WriteLine("VALUES READING TEST");
            Console.WriteLine("===================");
            Console.WriteLine("Value exists (cat->legs): " + ini.ValueExists("cat", "legs"));
            Console.WriteLine("Value exists (cat->tentacles): " + ini.ValueExists("cat", "tentacles"));
            Console.WriteLine();
            Console.WriteLine("Value (cat->legs): " + ini.GetValue <int>("cat", "legs"));
            Console.WriteLine("Value (cat->weight_in_kilograms): " + ini.GetValue <float>("cat", "weight_in_kilograms"));
            Console.WriteLine("Value (kitten->legs): " + ini.GetValue <int>("kitten", "legs"));
            Console.WriteLine("Value (kitten->weight_in_kilograms): " + ini.GetValue <float>("kitten", "weight_in_kilograms"));
            Console.WriteLine();

            Console.WriteLine("VALUES WRITING TEST");
            Console.WriteLine("===================");
            Console.WriteLine("Set (cat->weight_in_kilograms) to 8.4");
            ini.SetValue("cat", "weight_in_kilograms", 8.4f);
            Console.WriteLine("Value (cat->weight_in_kilograms): " + ini.GetValue <float>("cat", "weight_in_kilograms"));

            Console.WriteLine();
            Console.WriteLine("Press any key to close...");
            Console.ReadKey();
        }
Exemplo n.º 10
0
        /// <summary>
        /// Loads strings from a .ini file.
        /// </summary>
        /// <param name="ini">The ini file to load from.</param>
        /// <returns>True is successful, false if an error happened.</returns>
        protected override bool OnLoad(INIFile ini)
        {
            Strings.Clear();

            foreach (string section in ini.GetSections())
            {
                foreach (string key in ini.GetKeysInSection(section))
                {
                    string stringKey = MakeStringKey(section, key);

                    if (Strings.ContainsKey(stringKey))
                    {
                        Strings[stringKey] = ini.GetValue(section, key, "");
                    }
                    else
                    {
                        Strings.Add(stringKey, ini.GetValue(section, key, ""));
                    }
                }
            }

            return(true);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>

        protected override bool OnLoad(string iniFilePath)
        {
            int i;

            using (INIFile ini = new INIFile(iniFilePath))
            {
                // [Briefing] section
                BriefingNames = ini.GetValueArray <string>("Briefing", "Names");

                // [Theater] section
                DCSID               = ini.GetValue <string>("Theater", "DCSID");
                DefaultMapCenter    = ini.GetValue <Coordinates>("Theater", "DefaultMapCenter");
                MagneticDeclination = ini.GetValue <float>("Theater", "MagneticDeclination");

                // [Daytime] section
                DayTime = new MinMaxI[12];
                for (i = 0; i < 12; i++)
                {
                    MinMaxI?dayTimeValue = ParseMinMaxTime(ini.GetValueArray <string>("Daytime", ((Month)i).ToString()));

                    if (!dayTimeValue.HasValue) // Cast failed
                    {
                        DebugLog.Instance.WriteLine(
                            $"Wrong format for daytime value for month {(Month)i} in theater {ID}, using default value", 0,
                            DebugLogMessageErrorLevel.Warning);
                    }

                    DayTime[i] = dayTimeValue ?? DEFAULT_DAYTIME;
                }

                // [Temperature] section
                Temperature = new MinMaxI[12];
                for (i = 0; i < 12; i++)
                {
                    Temperature[i] = ini.GetValue <MinMaxI>("Temperature", ((Month)i).ToString());
                }

                // [Weather] section
                Weather = new DBEntryTheaterWeather[Toolbox.EnumCount <Weather>() - 1]; // -1 because we don't want "Random"
                for (i = 0; i < Weather.Length; i++)
                {
                    Weather[i] = new DBEntryTheaterWeather(ini, ((Weather)i).ToString());
                }

                // [Wind] section
                Wind = new DBEntryTheaterWind[Toolbox.EnumCount <Wind>() - 1]; // -1 because we don't want "Auto"
                for (i = 0; i < Wind.Length; i++)
                {
                    Wind[i] = new DBEntryTheaterWind(ini, ((Wind)i).ToString());
                }

                // [Airbases] section
                Airbases = new DBEntryTheaterAirbase[ini.GetTopLevelKeysInSection("Airbases").Length];
                i        = 0;
                foreach (string k in ini.GetTopLevelKeysInSection("Airbases"))
                {
                    Airbases[i] = new DBEntryTheaterAirbase(ini, k); i++;
                }

                // [SpawnPoints] section
                List <DBEntryTheaterSpawnPoint> spawnPointsList = new List <DBEntryTheaterSpawnPoint>();
                foreach (string k in ini.GetKeysInSection("SpawnPoints"))
                {
                    DBEntryTheaterSpawnPoint sp = new DBEntryTheaterSpawnPoint();
                    if (sp.Load(ini, k))
                    {
                        spawnPointsList.Add(sp);
                    }
                }
                SpawnPoints = spawnPointsList.ToArray();
            }

            return(true);
        }
Exemplo n.º 12
0
        protected override bool OnLoad(string iniFilePath)
        {
            int i;

            var ini = new INIFile(iniFilePath);

            // [Briefing] section
            BriefingNames = ini.GetValueArray <string>("Briefing", "Names");

            // [Theater] section
            DCSID               = ini.GetValue <string>("Theater", "DCSID");
            DefaultMapCenter    = ini.GetValue <Coordinates>("Theater", "DefaultMapCenter");
            MagneticDeclination = ini.GetValue <double>("Theater", "MagneticDeclination");

            // [Daytime] section
            DayTime = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                MinMaxI?dayTimeValue = ParseMinMaxTime(ini.GetValueArray <string>("Daytime", ((Month)i).ToString()));

                if (!dayTimeValue.HasValue) // Cast failed
                {
                    BriefingRoom.PrintToLog(
                        $"Wrong format for daytime value for month {(Month)i} in theater {ID}, using default value",
                        LogMessageErrorLevel.Warning);
                }

                DayTime[i] = dayTimeValue ?? DEFAULT_DAYTIME;
            }


            // Water Coordinates
            WaterCoordinates = new List <Coordinates>();
            foreach (string key in ini.GetKeysInSection("WaterCoordinates"))
            {
                WaterCoordinates.Add(ini.GetValue <Coordinates>("WaterCoordinates", key));
            }


            List <DBEntryTheaterSpawnPoint> spawnPointsList = new List <DBEntryTheaterSpawnPoint>();

            foreach (string key in ini.GetKeysInSection("SpawnPoints"))
            {
                DBEntryTheaterSpawnPoint sp = new DBEntryTheaterSpawnPoint();
                if (sp.Load(ini, key))
                {
                    spawnPointsList.Add(sp);
                }
            }
            SpawnPoints = spawnPointsList.ToArray();

            WaterExclusionCoordinates = new List <List <Coordinates> >();
            if (ini.GetSections().Contains("waterexclusioncoordinates"))
            {
                // Water Exclusion Coordinates
                var tempList = new List <Coordinates>();
                var groupID  = ini.GetKeysInSection("WaterExclusionCoordinates").First().Split(".")[0];
                foreach (string key in ini.GetKeysInSection("WaterExclusionCoordinates"))
                {
                    var newGroupId = key.Split(".")[0];
                    if (groupID != newGroupId)
                    {
                        groupID = newGroupId;
                        WaterExclusionCoordinates.Add(tempList);
                        tempList = new List <Coordinates>();
                    }
                    tempList.Add(ini.GetValue <Coordinates>("WaterExclusionCoordinates", key));
                }
                WaterExclusionCoordinates.Add(tempList);
            }

            // [Temperature] section
            Temperature = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                Temperature[i] = ini.GetValue <MinMaxI>("Temperature", ((Month)i).ToString());
            }

            return(true);
        }