/// <summary> /// Resets all properties to their default values. /// </summary> public void Clear() { BriefingDate = new MissionTemplateDate(); BriefingDescription = ""; BriefingName = ""; BriefingUnitSystem = UnitSystem.Imperial; ContextCoalitionBlue = TemplateTools.CheckValue <DBEntryCoalition>(Database.Instance.Common.DefaultCoalitionBlue); ContextCoalitionPlayer = Coalition.Blue; ContextCoalitionRed = TemplateTools.CheckValue <DBEntryCoalition>(Database.Instance.Common.DefaultCoalitionRed); ContextDecade = Decade.Decade2000; EnvironmentSeason = Season.Random; EnvironmentTimeOfDay = TimeOfDay.RandomDaytime; EnvironmentWeather = Weather.Random; EnvironmentWind = Wind.Auto; ObjectiveCount = Database.Instance.Common.DefaultObjectiveCount; ObjectiveDistanceNM = 0; ObjectiveType = TemplateTools.CheckValue <DBEntryObjective>(Database.Instance.Common.DefaultObjective); OppositionAirDefense = AmountN.Random; OppositionAirForce = AmountN.Random; OppositionOnStationChance = AmountN.Random; OppositionSkillLevelAir = BRSkillLevel.Random; OppositionSkillLevelGround = BRSkillLevel.Random; OppositionUnitsLocation = SpawnPointPreferredCoalition.Any; OptionsCivilianTraffic = CivilianTraffic.Low; OptionsEndMode = MissionEndMode.NoEnd; OptionsPreferences = new MissionTemplatePreferences[0]; OptionsRealism = new RealismOption[] { RealismOption.NoBDA }; OptionsScriptExtensions = new string[0]; OptionsUnitMods = new string[0]; PlayerAISkillLevel = BRSkillLevel.Random; PlayerEscortCAP = 0; PlayerEscortSEAD = 0; PlayerFriendlyAirDefense = AmountN.Random; PlayerStartLocation = PlayerStartLocation.Runway; PlayerMPFlightGroups = new MissionTemplateMPFlightGroup[0]; PlayerSPAircraft = TemplateTools.CheckValuePlayerAircraft(Database.Instance.Common.DefaultPlayerAircraft); PlayerSPWingmen = 1; PlayerSPCarrier = ""; TheaterID = TemplateTools.CheckValue <DBEntryTheater>(Database.Instance.Common.DefaultTheater); TheaterRegionsCoalitions = CountryCoalition.Default; TheaterStartingAirbase = ""; }
/// <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)) { BriefingDate.LoadFromFile(ini); BriefingDescription = ini.GetValue("Briefing", "Description", BriefingDescription); BriefingName = ini.GetValue("Briefing", "Name", BriefingName); BriefingUnitSystem = ini.GetValue("Briefing", "UnitSystem", BriefingUnitSystem); ContextCoalitionBlue = ini.GetValue("Context", "Coalition.Blue", ContextCoalitionBlue); ContextCoalitionPlayer = ini.GetValue("Context", "Coalition.Player", ContextCoalitionPlayer); ContextCoalitionRed = ini.GetValue("Context", "Coalition.Red", ContextCoalitionRed); ContextDecade = ini.GetValue("Context", "Decade", ContextDecade); EnvironmentSeason = ini.GetValue("Environment", "Season", EnvironmentSeason); EnvironmentTimeOfDay = ini.GetValue("Environment", "TimeOfDay", EnvironmentTimeOfDay); EnvironmentWeather = ini.GetValue("Environment", "Weather", EnvironmentWeather); EnvironmentWind = ini.GetValue("Environment", "Wind", EnvironmentWind); ObjectiveCount = ini.GetValue("Objective", "Count", ObjectiveCount); ObjectiveDistanceNM = ini.GetValue("Objective", "Distance", ObjectiveDistanceNM); ObjectiveType = ini.GetValue("Objective", "Type", ObjectiveType); OppositionAirDefense = ini.GetValue("Opposition", "AirDefense", OppositionAirDefense); OppositionAirForce = ini.GetValue("Opposition", "AirForce", OppositionAirForce); OppositionOnStationChance = ini.GetValue("Opposition", "OnStationChance", OppositionOnStationChance); OppositionSkillLevelAir = ini.GetValue("Opposition", "SkillLevel.Air", OppositionSkillLevelAir); OppositionSkillLevelGround = ini.GetValue("Opposition", "SkillLevel.Ground", OppositionSkillLevelGround); OppositionUnitsLocation = ini.GetValue("Opposition", "UnitsLocation", OppositionUnitsLocation); OptionsCivilianTraffic = ini.GetValue("Options", "CivilianTraffic", OptionsCivilianTraffic); OptionsEndMode = ini.GetValue("Options", "EndMode", OptionsEndMode); OptionsPreferences = ini.GetValueArray <MissionTemplatePreferences>("Options", "Preferences"); OptionsRealism = ini.GetValueArray <RealismOption>("Options", "Realism"); OptionsScriptExtensions = ini.GetValueArray <string>("Options", "ScriptExtensions"); OptionsUnitMods = ini.GetValueArray <string>("Options", "UnitMods"); PlayerAISkillLevel = ini.GetValue("Player", "AISkillLevel", PlayerAISkillLevel); PlayerEscortCAP = ini.GetValue("Player", "EscortCAP", PlayerEscortCAP); PlayerEscortSEAD = ini.GetValue("Player", "EscortSEAD", PlayerEscortSEAD); PlayerFriendlyAirDefense = ini.GetValue("Player", "FriendlyAirDefense", PlayerFriendlyAirDefense); PlayerStartLocation = ini.GetValue("Player", "StartLocation", PlayerStartLocation); int fgFlightGroupCount = Math.Max(0, ini.GetValue <int>("PlayerMP", "FGCount")); PlayerMPFlightGroups = new MissionTemplateMPFlightGroup[fgFlightGroupCount]; for (int i = 0; i < fgFlightGroupCount; i++) { PlayerMPFlightGroups[i] = new MissionTemplateMPFlightGroup(ini, "PlayerMP", $"FG{i:000}"); } PlayerSPAircraft = ini.GetValue("PlayerSP", "Aircraft", PlayerSPAircraft); PlayerSPWingmen = ini.GetValue("PlayerSP", "Wingmen", PlayerSPWingmen); PlayerSPCarrier = ini.GetValue("PlayerSP", "Carrier", PlayerSPCarrier); TheaterID = ini.GetValue("Theater", "ID", TheaterID); TheaterRegionsCoalitions = ini.GetValue("Theater", "RegionsCoalitions", TheaterRegionsCoalitions); TheaterStartingAirbase = ini.GetValue("Theater", "StartingAirbase", TheaterStartingAirbase); } return(true); }