/// <summary> /// Constructor. /// </summary> public DatabaseCommon() { EnemyAirDefense = new DatabaseCommonAirDefenseInfo[Toolbox.EnumCount <AmountN>()]; EnemyAirDefenseDistanceFromObjectives = new MinMaxD[Toolbox.EnumCount <AirDefenseRange>()]; EnemyAirDefenseDistanceFromTakeOffLocation = new int[Toolbox.EnumCount <AirDefenseRange>()]; AllyAirDefense = new DatabaseCommonAirDefenseInfo[Toolbox.EnumCount <AmountN>()]; AllyAirDefenseDistanceFromObjectives = new int[Toolbox.EnumCount <AirDefenseRange>()]; AllyAirDefenseDistanceFromTakeOffLocation = new MinMaxD[Toolbox.EnumCount <AirDefenseRange>()]; EnemyCAPRelativePower = new double[Toolbox.EnumCount <AmountN>()]; }
/// <summary> /// Loads common settings from <see cref="COMMON_SETTINGS_FILE"/> /// </summary> public void Load() { int i; DebugLog.Instance.WriteLine("Loading common global settings...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}Common.ini")) { CommonOGG = ini.GetValueArray <string>("Include", "CommonOgg"); foreach (string f in CommonOGG) { if (!File.Exists($"{BRPaths.INCLUDE_OGG}{f}.ogg")) { DebugLog.Instance.WriteLine($"File \"Include\\Ogg\\{f}.ogg\" doesn't exist.", 1, DebugLogMessageErrorLevel.Warning); } } CommonOGGForGameMode = new string[Toolbox.EnumCount <MissionType>()][]; for (i = 0; i < CommonOGGForGameMode.Length; i++) { CommonOGGForGameMode[i] = ini.GetValueArray <string>("Include", $"CommonOgg.{(MissionType)i}"); foreach (string f in CommonOGGForGameMode[i]) { if (!File.Exists($"{BRPaths.INCLUDE_OGG}{f}.ogg")) { DebugLog.Instance.WriteLine($"File \"Include\\Ogg\\{f}.ogg\" doesn't exist.", 1, DebugLogMessageErrorLevel.Warning); } } } } DebugLog.Instance.WriteLine("Loading template defaults...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}Defaults.ini")) { DefaultCoalitionBlue = ini.GetValue <string>("TemplateDefaults", "Coalition.Blue"); DefaultCoalitionRed = ini.GetValue <string>("TemplateDefaults", "Coalition.Red"); DefaultObjective = ini.GetValue <string>("TemplateDefaults", "Objective"); DefaultObjectiveCount = ini.GetValue <int>("TemplateDefaults", "ObjectiveCount"); DefaultPlayerAircraft = ini.GetValue <string>("TemplateDefaults", "PlayerAircraft"); DefaultTheater = ini.GetValue <string>("TemplateDefaults", "Theater"); } DebugLog.Instance.WriteLine("Loading common enemy air defense settings...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}EnemyAirDefense.ini")) { EnemyCAPDistanceFromObjectives = ini.GetValue <MinMaxD>("CombatAirPatrols", "DistanceFromObjectives"); EnemyCAPMinDistanceFromTakeOffLocation = ini.GetValue <int>("CombatAirPatrols", "MinDistanceFromTakeOffLocation"); for (i = 0; i < Toolbox.EnumCount <AmountN>(); i++) { EnemyAirDefense[i] = new DatabaseCommonAirDefenseInfo(ini, (AmountN)i); EnemyCAPRelativePower[i] = (i == 0) ? 0.0 : Toolbox.Clamp(ini.GetValue <int>("CombatAirPatrols", $"RelativePower.{(AmountN)i}"), 0, 100) / 100.0; } for (i = 0; i < Toolbox.EnumCount <AirDefenseRange>(); i++) { EnemyAirDefenseDistanceFromTakeOffLocation[i] = ini.GetValue <int>("AirDefenseRange", $"{(AirDefenseRange)i}.MinDistanceFromTakeOffLocation"); EnemyAirDefenseDistanceFromObjectives[i] = ini.GetValue <MinMaxD>("AirDefenseRange", $"{(AirDefenseRange)i}.DistanceFromObjectives"); } } DebugLog.Instance.WriteLine("Loading common ally air defense settings...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}AllyAirDefense.ini")) { for (i = 0; i < Toolbox.EnumCount <AmountN>(); i++) { AllyAirDefense[i] = new DatabaseCommonAirDefenseInfo(ini, (AmountN)i); } for (i = 0; i < Toolbox.EnumCount <AirDefenseRange>(); i++) { AllyAirDefenseDistanceFromTakeOffLocation[i] = ini.GetValue <MinMaxD>("AirDefenseRange", $"{(AirDefenseRange)i}.DistanceFromTakeOffLocation"); AllyAirDefenseDistanceFromObjectives[i] = ini.GetValue <int>("AirDefenseRange", $"{(AirDefenseRange)i}.MinDistanceFromObjectives"); } } DebugLog.Instance.WriteLine("Loading common names settings...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}Names.ini")) { MissionNameTemplate = ini.GetValue <string>("Mission", "Template"); for (i = 0; i < MISSION_NAMES_PART_COUNT; i++) { MissionNameParts[i] = ini.GetValueArray <string>("Mission", $"Part{i + 1}"); } for (i = 0; i < Toolbox.EnumCount <UnitFamily>(); i++) { UnitBriefingNames[i] = ini.GetValueArray <string>("UnitBriefing", ((UnitFamily)i).ToString()); Array.Resize(ref UnitBriefingNames[i], 2); UnitGroupNames[i] = ini.GetValue <string>("UnitGroup", ((UnitFamily)i).ToString()); } WPNameFinal = ini.GetValue <string>("Waypoints", "Final"); WPNameInitial = ini.GetValue <string>("Waypoints", "Initial"); WPNameNavigation = ini.GetValue <string>("Waypoints", "Navigation"); WPNamesObjectives = ini.GetValueArray <string>("Waypoints", "Objectives"); } DebugLog.Instance.WriteLine("Loading common objective settings...", 1); using (INIFile ini = new INIFile($"{BRPaths.DATABASE}Objectives.ini")) { for (i = 0; i < Toolbox.EnumCount <Amount>(); i++) { DistanceBetweenObjectives[i] = Math.Max(0, ini.GetValue <int>("DistanceToObjective", $"{(Amount)i}.DistanceBetweenObjectives")); DistanceFromTakeOffLocation[i] = Math.Max(0, ini.GetValue <int>("DistanceToObjective", $"{(Amount)i}.DistanceFromTakeOffLocation")); } } }