Пример #1
0
        public bool CheckValues(out string[] errorMessages)
        {
            bool          changesMade       = false;
            List <string> errorMessagesList = new List <string>();

            if (PlayerFlightGroups.Length == 0)
            {
                PlayerFlightGroups = new MissionTemplateFlightGroup[] { new MissionTemplateFlightGroup() };
                changesMade        = true;
                errorMessagesList.Add("No player flight group in template, added default flight group.");
            }

            if ((MissionType == MissionType.SinglePlayer) && (PlayerFlightGroups.Length > 1))
            {
                MissionType = MissionType.Multiplayer;
                changesMade = true;
                errorMessagesList.Add("Multiple player flight groups, mission type was changed to multiplayer.");
            }

            foreach (string msg in errorMessagesList)
            {
                DebugLog.Instance.WriteLine(msg, DebugLogMessageErrorLevel.Warning);
            }

            errorMessages = errorMessagesList.ToArray();
            return(changesMade);
        }
Пример #2
0
        /// <summary>
        /// Resets all properties to their default values.
        /// </summary>
        public void Clear()
        {
            MissionType = MissionType.SinglePlayer;

            ContextCoalitionBlue   = Database.Instance.CheckValue <DBEntryCoalition>("USA");
            ContextCoalitionPlayer = Coalition.Blue;
            ContextCoalitionRed    = Database.Instance.CheckValue <DBEntryCoalition>("Russia");
            ContextDecade          = Decade.Decade2000;
            ContextTheater         = Database.Instance.CheckValue <DBEntryTheater>("Caucasus");

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

            FlightPlanAddExtraWaypoints      = YesNo.No;
            FlightPlanTheaterStartingAirbase = "";

            ObjectiveCount    = 2;
            ObjectiveDistance = 0;
            ObjectiveType     = "";

            OptionsBriefingUnitSystem         = UnitSystem.Imperial;
            OptionsCivilianTraffic            = CivilianTraffic.Low;
            OptionsEndMode                    = MissionEndMode.Never;
            OptionsEnemyUnitsLocation         = SpawnPointPreferredCoalition.Any;
            OptionsRadioSounds                = YesNo.Yes;
            OptionsTheaterCountriesCoalitions = CountryCoalition.Default;

            SituationEnemyAirDefense         = AmountN.Random;
            SituationEnemyAirForce           = AmountN.Random;
            SituationEnemyCAPOnStationChance = AmountN.Random;
            SituationEnemySkillLevelAir      = BRSkillLevel.Random;
            SituationEnemySkillLevelGround   = BRSkillLevel.Random;
            SituationEnemySupportAircraft    = AmountN.Random;

            SituationFriendlyAISkillLevel = BRSkillLevel.Random;
            SituationFriendlyAirDefense   = AmountN.Random;
            SituationFriendlyEscortCAP    = 0;
            SituationFriendlyEscortSEAD   = 0;

            PlayerFlightGroups = new MissionTemplateFlightGroup[] { new MissionTemplateFlightGroup() };

            Realism = new RealismOption[] { RealismOption.DisableDCSRadioAssists, RealismOption.NoBDA };

            ScriptExtensions = new string[0];

            UnitMods = new string[0];

            CheckValues(out string[] _);
        }
Пример #3
0
        /// <summary>
        /// Loads a mission template from an .ini file.
        /// </summary>
        /// <param name="filePath">Path to the .ini file</param>
        /// <returns></returns>
        public bool LoadFromFile(string filePath)
        {
            Clear();
            if (!File.Exists(filePath))
            {
                return(false);
            }

            using (INIFile ini = new INIFile(filePath))
            {
                MissionType = ini.GetValue("Common", "MissionType", MissionType);

                ContextCoalitionBlue   = Database.Instance.CheckValue <DBEntryCoalition>(ini.GetValue("Context", "Coalition.Blue", ContextCoalitionBlue));
                ContextCoalitionPlayer = ini.GetValue("Context", "Coalition.Player", ContextCoalitionPlayer);
                ContextCoalitionRed    = Database.Instance.CheckValue <DBEntryCoalition>(ini.GetValue("Context", "Coalition.Red", ContextCoalitionRed));
                ContextDecade          = ini.GetValue("Context", "Decade", ContextDecade);
                ContextTheater         = Database.Instance.CheckValue <DBEntryTheater>(ini.GetValue("Context", "Theater", ContextTheater));

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

                FlightPlanAddExtraWaypoints      = ini.GetValue("FlightPlan", "ExtraWaypoints", FlightPlanAddExtraWaypoints);
                FlightPlanTheaterStartingAirbase = ini.GetValue("FlightPlan", "TheaterStartingAirbase", FlightPlanTheaterStartingAirbase);

                ObjectiveCount    = Toolbox.Clamp(ini.GetValue("Objective", "Count", ObjectiveCount), 1, MAX_OBJECTIVES);
                ObjectiveDistance = Toolbox.Clamp(ini.GetValue("Objective", "Distance", ObjectiveDistance), 0, MAX_OBJECTIVE_DISTANCE);
                ObjectiveType     = Database.Instance.CheckValue <DBEntryObjective>(ini.GetValue("Objective", "Type", ObjectiveType), "", true);

                OptionsBriefingUnitSystem         = ini.GetValue("Options", "BriefingUnitSystem", OptionsBriefingUnitSystem);
                OptionsCivilianTraffic            = ini.GetValue("Options", "CivilianTraffic", OptionsCivilianTraffic);
                OptionsEndMode                    = ini.GetValue("Options", "EndMode", OptionsEndMode);
                OptionsEnemyUnitsLocation         = ini.GetValue("Options", "EnemyUnitsLocation", OptionsEnemyUnitsLocation);
                OptionsRadioSounds                = ini.GetValue("Options", "RadioSounds", OptionsRadioSounds);
                OptionsTheaterCountriesCoalitions = ini.GetValue("Options", "TheaterCountriesCoalitions", OptionsTheaterCountriesCoalitions);

                SituationEnemyAirDefense         = ini.GetValue("SituationEnemy", "AirDefense", SituationEnemyAirDefense);
                SituationEnemyAirForce           = ini.GetValue("SituationEnemy", "AirForce", SituationEnemyAirForce);
                SituationEnemyCAPOnStationChance = ini.GetValue("SituationEnemy", "CAPOnStationChance", SituationEnemyCAPOnStationChance);
                SituationEnemySkillLevelAir      = ini.GetValue("SituationEnemy", "SkillLevelAir", SituationEnemySkillLevelAir);
                SituationEnemySkillLevelGround   = ini.GetValue("SituationEnemy", "SkillLevelGround", SituationEnemySkillLevelGround);
                SituationEnemySupportAircraft    = ini.GetValue("SituationEnemy", "SupportAircraft", SituationEnemySupportAircraft);

                SituationFriendlyAISkillLevel = ini.GetValue("SituationFriendly", "AISkillLevel", SituationFriendlyAISkillLevel);
                SituationFriendlyAirDefense   = ini.GetValue("SituationFriendly", "AirDefense", SituationFriendlyAirDefense);
                SituationFriendlyEscortCAP    = Toolbox.Clamp(ini.GetValue("SituationFriendly", "EscortCAP", SituationFriendlyEscortCAP), 0, Toolbox.MAXIMUM_FLIGHT_GROUP_SIZE);
                SituationFriendlyEscortSEAD   = Toolbox.Clamp(ini.GetValue("SituationFriendly", "EscortSEAD", SituationFriendlyEscortSEAD), 0, Toolbox.MAXIMUM_FLIGHT_GROUP_SIZE);

                int fgFlightGroupCount = Math.Max(0, ini.GetValue <int>("PlayerFlightGroups", "Count"));
                PlayerFlightGroups = new MissionTemplateFlightGroup[fgFlightGroupCount];
                for (int i = 0; i < fgFlightGroupCount; i++)
                {
                    PlayerFlightGroups[i] = new MissionTemplateFlightGroup(ini, "PlayerFlightGroups", $"FG{i:000}");
                }
                if (PlayerFlightGroups.Length == 0)
                {
                    PlayerFlightGroups = new MissionTemplateFlightGroup[] { new MissionTemplateFlightGroup() }
                }
                ;

                Realism = ini.GetValueArray <RealismOption>("Realism", "Realism").Distinct().ToArray();

                ScriptExtensions = ini.GetValueArray <string>("ScriptExtensions", "ScriptExtensions").Distinct().ToArray();

                UnitMods = ini.GetValueArray <string>("UnitMods", "UnitMods").Distinct().ToArray();
            }

            CheckValues(out string[] _);

            return(true);
        }