/// <summary> /// Save the mission template to an .ini file. /// </summary> /// <param name="filePath">Path to the .ini file.</param> public void SaveToFile(string filePath) { using (INIFile ini = new INIFile()) { BriefingDate.SaveToFile(ini); ini.SetValue("Briefing", "Description", BriefingDescription); ini.SetValue("Briefing", "Name", BriefingName); ini.SetValue("Briefing", "UnitSystem", BriefingUnitSystem); ini.SetValue("Context", "Coalition.Blue", ContextCoalitionBlue); ini.SetValue("Context", "Coalition.Player", ContextCoalitionPlayer); ini.SetValue("Context", "Coalition.Red", ContextCoalitionRed); ini.SetValue("Context", "Decade", ContextDecade); ini.SetValue("Environment", "Season", EnvironmentSeason); ini.SetValue("Environment", "TimeOfDay", EnvironmentTimeOfDay); ini.SetValue("Environment", "Weather", EnvironmentWeather); ini.SetValue("Environment", "Wind", EnvironmentWind); ini.SetValue("Objective", "Count", ObjectiveCount); ini.SetValue("Objective", "Distance", ObjectiveDistance); ini.SetValue("Objective", "Type", ObjectiveType); ini.SetValue("Opposition", "AirDefense", OppositionAirDefense); ini.SetValue("Opposition", "AirForce", OppositionAirForce); ini.SetValue("Opposition", "OnStationChance", OppositionOnStationChance); ini.SetValue("Opposition", "SkillLevel.Air", OppositionSkillLevelAir); ini.SetValue("Opposition", "SkillLevel.Ground", OppositionSkillLevelGround); ini.SetValue("Opposition", "UnitsLocation", OppositionUnitsLocation); ini.SetValue("Options", "EndMode", OptionsEndMode); ini.SetValueArray("Options", "Preferences", OptionsPreferences); ini.SetValueArray("Options", "ScriptExtensions", OptionsScriptExtensions); ini.SetValueArray("Options", "UnitMods", OptionsUnitMods); ini.SetValue("Player", "AISkillLevel", PlayerAISkillLevel); ini.SetValue("Player", "Carrier", PlayerCarrier); ini.SetValue("Player", "EscortCAP", PlayerEscortCAP); ini.SetValue("Player", "EscortSEAD", PlayerEscortSEAD); ini.SetValue("Player", "FriendlyAirDefense", PlayerFriendlyAirDefense); ini.SetValue("Player", "StartLocation", PlayerStartLocation); ini.SetValue("PlayerSP", "Aircraft", PlayerSPAircraft); ini.SetValue("PlayerSP", "Wingmen", PlayerSPWingmen); ini.SetValue("PlayerSP", "Wingmen.SkillLevel", PlayerAISkillLevel); ini.SetValue("PlayerMP", "FGCount", PlayerMPFlightGroups.Length); for (int i = 0; i < PlayerMPFlightGroups.Length; i++) { PlayerMPFlightGroups[i].SaveToFile(ini, "PlayerMP", $"FG{i:000}"); } ini.SetValue("Theater", "ID", TheaterID); ini.SetValue("Theater", "RegionsCoalitions", TheaterRegionsCoalitions); ini.SetValue("Theater", "StartingAirbase", TheaterStartingAirbase); ini.SaveToFile(filePath); } }
/// <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); }