/// <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);
        }
        /// <summary>
        /// Sets a new "clean" template. Resets all settings to their default.
        /// </summary>
        /// <param name="addDefaultFlightGroup">Should a default flight group be added?</param>
        private void Clear(bool addDefaultFlightGroup)
        {
            BriefingDescription = "";
            BriefingName        = "";
            BriefingUnits       = UnitSystem.ByCoalition;

            ContextCoalitionBlue       = Library.Instance.Common.DefaultCoalitionBlue;
            ContextCoalitionRed        = Library.Instance.Common.DefaultCoalitionRed;
            ContextCountriesCoalitions = CountriesCoalition.Default;
            ContextPlayerCoalition     = Coalition.Blue;
            ContextTheater             = Library.Instance.Common.DefaultTheater;
            ContextTimePeriod          = TimePeriod.Decade2000;

            EnvironmentSeason    = Season.Random;
            EnvironmentTimeOfDay = TimeOfDay.RandomDaytime;
            EnvironmentWeather   = Weather.Random;
            EnvironmentWind      = Wind.Auto;

            ObjectiveCount    = 1;
            ObjectiveDistance = 50;
            ObjectiveType     = Library.Instance.Common.DefaultObjective;

            FlightPackagePlayers       = addDefaultFlightGroup ? new MissionTemplatePlayerFlightGroup[] { new MissionTemplatePlayerFlightGroup() } : new MissionTemplatePlayerFlightGroup[0];
            FlightPackageAICAP         = 0;
            FlightPackageAISEAD        = 0;
            FlightPackageSupportAWACS  = true;
            FlightPackageSupportTanker = true;

            PreferencesEnemiesOnF10Map = false;
            PreferencesForceClientInSP = false;
            PreferencesLanguage        = Library.Instance.Common.DefaultLanguage;
            PreferencesExtraWaypoints  = true;

            RealismAllowExternalViews = DCSOption.Default;
            RealismBirdStrikes        = DCSOption.Default;
            RealismRandomFailures     = DCSOption.Default;

            SituationEnemyAirDefense    = AmountNR.Random;
            SituationEnemyCAP           = AmountNR.Random;
            SituationFriendlyAirDefense = AmountNR.Random;
            SituationFriendlyCAP        = AmountNR.Random;

            SkillEnemyAir       = HQSkillLevel.Random;
            SkillEnemyGround    = HQSkillLevel.Random;
            SkillFriendlyAir    = HQSkillLevel.Random;
            SkillFriendlyGround = HQSkillLevel.Random;
        }