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); }
/// <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[] _); }
/// <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); }