Exemplo n.º 1
0
        /// <summary>
        /// Constructor. Loads data from a theater definition .ini file.
        /// </summary>
        /// <param name="ini">The .ini file to load from.</param>
        /// <param name="key">The value key.</param>
        public DefinitionTheaterWeather(INIFile ini, string key)
        {
            CloudsBase          = ini.GetValue <MinMaxI>("Weather", key + ".Clouds.Base");
            CloudsDensity       = ini.GetValue <MinMaxI>("Weather", key + ".Clouds.Density");
            CloudsPrecipitation = ini.GetValueArray <Precipitation>("Weather", key + ".Clouds.Precipitation");
            if (CloudsPrecipitation.Length == 0)
            {
                CloudsPrecipitation = new Precipitation[] { Precipitation.None }
            }
            ;
            CloudsThickness = ini.GetValue <MinMaxI>("Weather", key + ".Clouds.Thickness");

            DustEnabled = ini.GetValueArray <bool>("Weather", key + ".Dust.Enabled");
            if (DustEnabled.Length == 0)
            {
                DustEnabled = new bool[] { false }
            }
            ;
            DustDensity = ini.GetValue <MinMaxI>("Weather", key + ".Dust.Density");

            FogEnabled = ini.GetValueArray <bool>("Weather", key + ".Fog.Enabled");
            if (FogEnabled.Length == 0)
            {
                DustEnabled = new bool[] { false }
            }
            ;
            FogThickness  = ini.GetValue <MinMaxI>("Weather", key + ".Fog.Thickness");
            FogVisibility = ini.GetValue <MinMaxI>("Weather", key + ".Fog.Visibility");

            QNH        = ini.GetValue <MinMaxI>("Weather", key + ".QNH");
            Turbulence = ini.GetValue <MinMaxI>("Weather", key + ".Turbulence");
            Visibility = ini.GetValue <MinMaxI>("Weather", key + ".Visibility");
        }
    }
}
Exemplo n.º 2
0
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>

        protected override bool OnLoad(string iniFilePath)
        {
            using (INIFile ini = new INIFile(iniFilePath))
            {
                BriefingRemarks = ini.GetValueArray <string>("Briefing", "Remarks", ';');
                IncludeLua      = ini.GetValueArray <string>("Include", "Lua");
                IncludeOgg      = ini.GetValueArray <string>("Include", "Ogg");
                LuaSettings     = ini.GetValue <string>("Lua", "Settings");
            }

            foreach (string f in IncludeLua)
            {
                if (!File.Exists($"{BRPaths.INCLUDE_LUA_INCLUDEDSCRIPTS}{f}.lua"))
                {
                    DebugLog.Instance.WriteLine($"File \"Include\\Lua\\IncludedScripts\\{f}.lua\", required by mission feature \"{ID}\", doesn't exist.", 1, DebugLogMessageErrorLevel.Warning);
                }
            }

            foreach (string f in IncludeOgg)
            {
                if (!File.Exists($"{BRPaths.INCLUDE_OGG}{f}.ogg"))
                {
                    DebugLog.Instance.WriteLine($"File \"Include\\Ogg\\{f}.ogg\", required by mission feature \"{ID}\", doesn't exist.", 1, DebugLogMessageErrorLevel.Warning);
                }
            }

            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor. Loads data from a .ini file.
        /// </summary>
        /// <param name="ini">The .ini file to load from.</param>
        /// <param name="section">The .ini section to load from.</param>
        /// <param name="key">The top level .ini key to load from.</param>
        public LibraryCommonSettingsEnemyAirDefense(INIFile ini, string section, string key)
        {
            EmbeddedChance   = HQTools.Clamp(ini.GetValue <int>(section, $"{key}.Embedded.Chance") / 100.0, 0.0, 1.0);
            EmbeddedCount    = ini.GetValue <MinMaxI>(section, $"{key}.Embedded.Count");
            EmbeddedFamilies = ini.GetValueArray <UnitFamily>(section, $"{key}.Embedded.Families");
            EmbeddedFamilies = (from f in EmbeddedFamilies where VALID_EMBEDDED_FAMILIES.Contains(f) select f).ToArray();
            if (EmbeddedFamilies.Length == 0)
            {
                EmbeddedFamilies = new UnitFamily[] { UnitFamily.VehicleAAA }
            }
            ;

            InAreaGroupCount = new MinMaxI[AIR_DEFENSE_RANGE_COUNT];
            InAreaGroupSize  = new MinMaxI[AIR_DEFENSE_RANGE_COUNT];
            InAreaFamilies   = new UnitFamily[AIR_DEFENSE_RANGE_COUNT][];

            for (int i = 0; i < AIR_DEFENSE_RANGE_COUNT; i++)
            {
                string subKey = $"{key}.InArea.{((AirDefenseRange)i).ToString()}";

                InAreaGroupCount[i] = ini.GetValue <MinMaxI>(section, $"{subKey}.GroupCount");
                InAreaGroupSize[i]  = ini.GetValue <MinMaxI>(section, $"{subKey}.GroupSize");
                InAreaFamilies[i]   = ini.GetValueArray <UnitFamily>(section, $"{subKey}.Families");
                InAreaFamilies[i]   = (from f in InAreaFamilies[i] where VALID_INAREA_FAMILIES.Contains(f) select f).ToArray();
                if (InAreaFamilies[i].Length == 0)
                {
                    InAreaFamilies[i] = new UnitFamily[] { UnitFamily.VehicleAAA }
                }
                ;
            }
        }
    }
}
Exemplo n.º 4
0
        protected override bool OnLoad(string iniFilePath)
        {
            var ini = new INIFile(iniFilePath);

            BriefingName = new string[2]
            {
                ini.GetValue <string>("ObjectiveTarget", "Briefing.UnitName.Singular"),
                ini.GetValue <string>("ObjectiveTarget", "Briefing.UnitName.Plural")
            };

            UnitFamilies = Toolbox.SetSingleCategoryFamilies(ini.GetValueArray <UnitFamily>("ObjectiveTarget", "Units.Families"));
            if (UnitFamilies.Length == 0)
            {
                BriefingRoom.PrintToLog($"No unit categories for objective target \"{ID}\"", LogMessageErrorLevel.Warning);
                return(false);
            }

            UnitCount = new MinMaxI[Toolbox.EnumCount <Amount>()];
            foreach (Amount amount in Toolbox.GetEnumValues <Amount>())
            {
                UnitCount[(int)amount] = ini.GetValue <MinMaxI>("ObjectiveTarget", $"Units.Count.{amount}");
            }

            ValidSpawnPoints = DatabaseTools.CheckSpawnPoints(ini.GetValueArray <SpawnPointType>("ObjectiveTarget", "ValidSpawnPoints"));

            return(true);
        }
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>
        protected override bool OnLoad(string iniFilePath)
        {
            using (INIFile ini = new INIFile(iniFilePath))
            {
                BriefingDescription             = ini.GetValue <string>("Briefing", "Description");
                BriefingDescriptionByUnitFamily = new string[Toolbox.EnumCount <UnitFamily>()];
                foreach (UnitFamily family in Toolbox.GetEnumValues <UnitFamily>())
                {
                    BriefingDescriptionByUnitFamily[(int)family] = ini.GetValue <string>("Briefing", $"Description.{family}");
                }

                BriefingRemarks         = ini.GetValueArray <string>("Briefing", "Remarks", ';');
                BriefingTask            = ini.GetValue <string>("Briefing", "Task");
                BriefingTaskFlightGroup = ini.GetValue <string>("Briefing", "Task.FlightGroup");

                Flags           = ini.GetValueArrayAsEnumFlags <DBEntryObjectiveFlags>("Objective", "Flags");
                MissionFeatures = GetValidDBEntryIDs <DBEntryMissionFeature>(
                    ini.GetValueArray <string>("Objective", "MissionFeatures"), out string[] invalidFeatures);
                foreach (string f in invalidFeatures)
                {
                    DebugLog.Instance.WriteLine($"Mission feature \"{f}\" not found in objective \"{ID}\"", DebugLogMessageErrorLevel.Warning);
                }

                Payload = ini.GetValue <UnitTaskPayload>("Objective", "Payload");

                UnitGroup     = new DBUnitGroup(ini, "UnitGroup");
                AllyUnitGroup = new DBUnitGroup(ini, "AllyUnitGroup");

                WaypointInaccuracy = ini.GetValue <MinMaxI>("Waypoint", "Inaccuracy");
                WaypointOnGround   = ini.GetValue <bool>("Waypoint", "OnGround");
            }

            return(true);
        }
Exemplo n.º 6
0
        protected override bool OnLoad(string iniFilePath)
        {
            //int i;

            var ini = new INIFile(iniFilePath);

            string[] badCountries = (from country in ini.GetValueArray <string>("Coalition", "Countries").Distinct() where !Enum.TryParse <Country>(country, true, out _) select country).ToArray();
            if (badCountries.Length > 0)
            {
                BriefingRoom.PrintToLog($"Bad countr{(badCountries.Length == 1 ? "y" : "ies")} in coalition \"{ID}\": {string.Join(", ", badCountries)}", LogMessageErrorLevel.Warning);
            }

            Countries = ini.GetValueArray <Country>("Coalition", "Countries").Append(Country.ALL).Distinct().OrderBy(x => x).ToArray();
            if (Countries.Length == 0)
            {
                BriefingRoom.PrintToLog($"No country in coalition \"{ID}\", coalition was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }

            DefaultUnitList = ini.GetValue <string>("Coalition", "DefaultUnitList");
            if (!Database.EntryExists <DBEntryDefaultUnitList>(DefaultUnitList))
            {
                BriefingRoom.PrintToLog($"Default unit list \"{DefaultUnitList}\" required by coalition \"{ID}\" doesn't exist. Coalition was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }

            NATOCallsigns = ini.GetValue("Coalition", "NATOCallsigns", false);

            return(true);
        }
Exemplo n.º 7
0
        internal MissionTemplatePackage(INIFile ini, string section, string key)
        {
            Clear();

            FlightGroupIndexes = ini.GetValueArray <int>(section, $"{key}.FlightGroupIndexes").ToList();
            ObjectiveIndexes   = ini.GetValueArray <int>(section, $"{key}.ObjectiveIndexes").ToList();
            StartingAirbase    = ini.GetValue(section, $"{key}.StartingAirbase", StartingAirbase);
        }
Exemplo n.º 8
0
        protected override bool OnLoad(string iniFilePath)
        {
            var ini = new INIFile(iniFilePath);

            // Unit info
            DCSIDs = (from string u in ini.GetValueArray <string>("Unit", "DCSID") select u.Trim()).ToArray();
            if (DCSIDs.Length < 1)
            {
                BriefingRoom.PrintToLog($"Unit {ID} contains no DCS unit ID, unit was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }
            Families = ini.GetValueArray <UnitFamily>("Unit", "Families");
            if (Families.Length == 0)
            {
                BriefingRoom.PrintToLog($"Unit {ID} has no family, unit was ignored.", LogMessageErrorLevel.Warning);
                return(false);
            }
            // Make sure all unit families belong to same category (unit cannot be a helicopter and a ground vehicle at the same time, for instance)
            Families = (from UnitFamily f in Families where f.GetUnitCategory() == Category select f).Distinct().ToArray();
            ExtraLua = ini.GetValue <string>("Unit", "ExtraLua").Trim();
            if (!string.IsNullOrEmpty(ExtraLua) && !ExtraLua.EndsWith(","))
            {
                ExtraLua += ",";
            }
            Flags             = ini.GetValueArrayAsEnumFlags <DBEntryUnitFlags>("Unit", "Flags");
            OffsetCoordinates = (from string s in ini.GetValueArray <string>("Unit", "Offset.Coordinates", ';') select new Coordinates(s)).ToArray();
            OffsetHeading     = ini.GetValueArray <double>("Unit", "Offset.Heading");
            Shape             = ini.GetValueArray <string>("Unit", "Shape");
            RequiredMod       = ini.GetValue <string>("Unit", "RequiredMod");

            AircraftData = new DBEntryUnitAircraftData();

            // Load the list of operators
            Operators = new Dictionary <Country, Decade[]>();
            foreach (string k in ini.GetKeysInSection("Operators"))
            {
                if (!Enum.TryParse(k, true, out Country country))
                {
                    BriefingRoom.PrintToLog($"Country {k} in unit {ID} doesn't exist.", LogMessageErrorLevel.Warning);
                    continue;
                }

                if (Operators.ContainsKey(country))
                {
                    continue;
                }
                Operators.Add(country, ini.GetValueArrayAsMinMaxEnum <Decade>("Operators", k));
            }

            if (IsAircraft)                                // Load aircraft-specific data, if required
            {
                DCSIDs       = new string[] { DCSIDs[0] }; // Aircraft can not have multiple unit types in their group
                AircraftData = new DBEntryUnitAircraftData(ini, iniFilePath.Contains(BRPaths.CUSTOMDATABASE));
            }

            return(true);
        }
Exemplo n.º 9
0
        internal DBEntryUnitAircraftData(INIFile ini, bool custom = false)
        {
            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseAltitude")) * Toolbox.FEET_TO_METERS);
            CruiseSpeed    = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseSpeed")) * Toolbox.KNOTS_TO_METERS_PER_SECOND);

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");
            PropsLua           = ini.GetValue <string>("Aircraft", "PropsLua");

            RadioFrequency  = ini.GetValue <double>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");

            MinimumRunwayLengthFt = ini.GetValue <int>("Aircraft", "MinimumRunwayLengthFt");

            var payloads = ini.GetKeysInSection("Aircraft").Where(x => x.StartsWith("payload.task")).Select(x => x.Split('.')[2]).Distinct().ToList();

            if (!custom)
            {
                PayloadTasks.Add("default", new string[MAX_PYLONS]);
            }

            foreach (string task in payloads)
            {
                if (task != "default" || custom)
                {
                    PayloadTasks.Add(task, new string[MAX_PYLONS]);
                }
                for (var pylonIndex = 0; pylonIndex < MAX_PYLONS; pylonIndex++)
                {
                    PayloadTasks[task][pylonIndex] = ini.GetValue <string>("Aircraft", $"Payload.Task.{task}.Pylon{pylonIndex + 1:00}");
                }
            }

            RadioPresets = new List <DBEntryUnitRadioPreset>();
            for (int i = 0; i < 4; i++)
            {
                if (ini.ValueExists("Aircraft", $"Radio.Presets.{i}.Channels"))
                {
                    RadioPresets.Add(
                        new DBEntryUnitRadioPreset(
                            ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Channels"),
                            ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Modulations")));
                }
            }
            Liveries = new List <string> {
                "default"
            };
            Liveries.AddRange(ini.GetValueArray <string>("Aircraft", "Liveries"));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">Objective database entry ini file</param>
        /// <param name="section">Ini section to load from</param>
        public DBUnitGroup(INIFile ini, string section)
        {
            Count             = ini.GetValue <MinMaxI>(section, "Count");
            DistanceFromPoint = ini.GetValue <MinMaxD>(section, "DistanceFromPoint");

            Families = ini.GetValueArray <UnitFamily>(section, "Families");
            if (Families.Length > 0) // If the group has at least one unit family (no families mean the group is disabled)...
            {
                // ...make sure all families belong to the same category
                UnitFamily family0 = Families[0];
                // Families don't have to be Distinct() because one may want to mention the same familiy several times
                // so it appears more often
                Families = (from UnitFamily family in Families where Toolbox.GetUnitCategoryFromUnitFamily(family) == Toolbox.GetUnitCategoryFromUnitFamily(family0) select family).ToArray();
            }

            Flags    = ini.GetValueArrayAsEnumFlags <DBUnitGroupFlags>(section, "Flags");
            LuaGroup = ini.GetValueArray <string>(section, "Lua.Group");
            LuaUnit  = ini.GetValue <string>(section, "Lua.Unit");
            // TODO: check LuaGroup and LuaUnit Lua files exist in Include/Lua

            List <TheaterLocationSpawnPointType> spList = new List <TheaterLocationSpawnPointType>(ini.GetValueArray <TheaterLocationSpawnPointType>(section, "SpawnPoints"));

            if (spList.Count == 0)
            {
                spList.AddRange(Toolbox.GetEnumValues <TheaterLocationSpawnPointType>());                   // No spawn point type means all spawn point types
            }
            // LandSmall implies LandLarge and LandMedium, LandMedium implies LandLarge (larger spots can handle smaller units)
            if (spList.Contains(TheaterLocationSpawnPointType.LandSmall))
            {
                spList.AddRange(new TheaterLocationSpawnPointType[] { TheaterLocationSpawnPointType.LandMedium, TheaterLocationSpawnPointType.LandLarge });
            }
            if (spList.Contains(TheaterLocationSpawnPointType.LandMedium))
            {
                spList.Add(TheaterLocationSpawnPointType.LandLarge);
            }
            SpawnPoints = spList.Distinct().ToArray();

            if (Families.Length > 0)
            {
                foreach (string lGroup in LuaGroup)
                {
                    if (!File.Exists($"{BRPaths.INCLUDE_LUA_UNITS}{lGroup}.lua"))
                    {
                        DebugLog.Instance.WriteLine($"File \"Include\\Lua\\Units\\{lGroup}.lua\" doesn't exist.", 1, DebugLogMessageErrorLevel.Warning);
                    }
                }

                if (!File.Exists($"{BRPaths.INCLUDE_LUA_UNITS}{LuaUnit}.lua"))
                {
                    DebugLog.Instance.WriteLine($"File \"Include\\Lua\\Units\\{LuaUnit}.lua\" doesn't exist.", 1, DebugLogMessageErrorLevel.Warning);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>

        protected override bool OnLoad(string iniFilePath)
        {
            using (INIFile ini = new INIFile(iniFilePath))
            {
                // Unit info
                DCSIDs = (from string u in ini.GetValueArray <string>("Unit", "DCSID") select u.Trim()).ToArray();
                if (DCSIDs.Length < 1)
                {
                    DebugLog.Instance.WriteLine($"Unit {ID} contains no DCS unit ID, unit was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }
                Families = ini.GetValueArray <UnitFamily>("Unit", "Families");
                if (Families.Length == 0)
                {
                    DebugLog.Instance.WriteLine($"Unit {ID} has no family, unit was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }
                // Make sure all unit families belong to same category (unit cannot be a helicopter and a ground vehicle at the same time, for instance)
                Families = (from UnitFamily f in Families where Toolbox.GetUnitCategoryFromUnitFamily(f) == Category select f).Distinct().ToArray();
                ExtraLua = ini.GetValue <string>("Unit", "ExtraLua").Trim();
                if (!string.IsNullOrEmpty(ExtraLua) && !ExtraLua.EndsWith(","))
                {
                    ExtraLua += ",";
                }
                Flags             = ini.GetValueArrayAsEnumFlags <DBEntryUnitFlags>("Unit", "Flags");
                OffsetCoordinates = (from string s in ini.GetValueArray <string>("Unit", "Offset.Coordinates", ';') select new Coordinates(s)).ToArray();
                OffsetHeading     = ini.GetValueArray <double>("Unit", "Offset.Heading");
                RequiredMod       = ini.GetValue <string>("Unit", "RequiredMod");

                AircraftData = new DBEntryUnitAircraftData();

                // Load the list of operators
                Operators = new Dictionary <string, Decade[]>(StringComparer.InvariantCultureIgnoreCase);
                foreach (string k in ini.GetKeysInSection("Operators"))
                {
                    if (Operators.ContainsKey(k))
                    {
                        continue;
                    }
                    Operators.Add(k, ini.GetValueArrayAsMinMaxEnum <Decade>("Operators", k));
                }

                if (IsAircraft)                                // Load aircraft-specific data, if required
                {
                    DCSIDs       = new string[] { DCSIDs[0] }; // Aircraft can not have multiple unit types in their group
                    AircraftData = new DBEntryUnitAircraftData(ini);
                }
            }

            return(true);
        }
Exemplo n.º 12
0
     /// <summary>
     /// Constructor.
     /// </summary>
     /// <param name="ini">The .ini file to load airbase data from.</param>
     /// <param name="key">The .ini file key to load from</param>
     public DefinitionObjectiveUnitGroup(INIFile ini, string key)
     {
         Family = ini.GetValueArray <UnitFamily>("UnitGroups", $"{key}.Family");
         if (Family.Length == 0)
         {
             Family = new UnitFamily[] { UnitFamily.HelicopterTransport }
         }
         ;
         Count    = ini.GetValue <MinMaxI>("UnitGroups", $"{key}.Count");
         Flags    = ini.GetValueArray <MissionObjectiveUnitGroupFlags>("UnitGroups", $"{key}.Flags");
         LuaGroup = ini.GetValue <string>("UnitGroups", $"{key}.Lua.Group").Trim();
         LuaUnit  = ini.GetValue <string>("UnitGroups", $"{key}.Lua.Unit").Trim();
     }
 }
Exemplo n.º 13
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="ini">The .ini file to load airbase data from.</param>
 /// <param name="airbaseKey">The top-level key (airbase unique ID)</param>
 public DefinitionTheaterAirbase(INIFile ini, string airbaseKey)
 {
     ATC          = ini.GetValueArray <float>("Airbases", $"{airbaseKey}.ATC");
     DCSID        = ini.GetValue <int>("Airbases", $"{airbaseKey}.DCSID");
     ILS          = ini.GetValueArray <string>("Airbases", $"{airbaseKey}.ILS");
     Coordinates  = ini.GetValue <Coordinates>("Airbases", $"{airbaseKey}.Coordinates");
     IsMilitary   = ini.GetValue <bool>("Airbases", $"{airbaseKey}.Military");
     Name         = ini.GetValue <string>("Airbases", $"{airbaseKey}.Name");
     ParkingSpots = ini.GetValue <int>("Airbases", $"{airbaseKey}.ParkingSpots");
     Runways      = ini.GetValueArray <int>("Airbases", $"{airbaseKey}.Runways");
     TACAN        = ini.GetValueArray <string>("Airbases", $"{airbaseKey}.TACAN");
     Country      = ini.GetValue <DCSCountry>("Airbases", $"{airbaseKey}.Country");
     Coalition    = ini.GetValue <Coalition>("Airbases", $"{airbaseKey}.Coalition");
 }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">INI file</param>
        public DBEntryUnitAircraftData(INIFile ini)
        {
            int i, j;

            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = ini.GetValue <Amount>("Aircraft", "CruiseAltitude");
            CruiseSpeed    = ini.GetValue <Amount>("Aircraft", "CruiseSpeed");

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");

            RadioFrequency  = ini.GetValue <float>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");
            for (i = 0; i < PayloadTasks.GetLength(0); i++)
            {
                PayloadTasks[i] = new string[MAX_PYLONS];
                for (j = 0; j < MAX_PYLONS; j++)
                {
                    PayloadTasks[i][j] = ini.GetValue <string>("Aircraft", $"Payload.Task.{(UnitTaskPayload)i}.Pylon{j + 1:00}");
                }
            }
        }
Exemplo n.º 15
0
        protected override bool OnLoad(string iniFilePath)
        {
            var ini = new INIFile(iniFilePath);

            Location = ini.GetValue <DBEntryObjectiveTargetBehaviorLocation>("Behavior", "Location");

            GroupLua = new string[Toolbox.EnumCount <UnitCategory>()];
            foreach (UnitCategory unitCategory in Toolbox.GetEnumValues <UnitCategory>())
            {
                GroupLua[(int)unitCategory] = ini.GetValue <string>("Lua", $"Group.{unitCategory}");
            }

            UnitLua = new string[Toolbox.EnumCount <UnitCategory>()];
            foreach (UnitCategory unitLua in Toolbox.GetEnumValues <UnitCategory>())
            {
                UnitLua[(int)unitLua] = ini.GetValue <string>("Lua", $"Unit.{unitLua}");
            }

            ValidUnitCategories = ini.GetValueArray <UnitCategory>("Behavior", "ValidUnitCategories").Distinct().ToArray();
            if (ValidUnitCategories.Length == 0)
            {
                ValidUnitCategories = Toolbox.GetEnumValues <UnitCategory>();                                 // No category means all categories
            }
            return(true);
        }
Exemplo n.º 16
0
        internal DBCommonAirDefenseLevel(INIFile ini, AmountNR airDefenseLevel)
        {
            int i;

            GroupsInArea = new MinMaxI[Toolbox.EnumCount <AirDefenseRange>()];

            if ((airDefenseLevel == AmountNR.None) || (airDefenseLevel == AmountNR.Random))
            {
                EmbeddedChance    = 0;
                EmbeddedUnitCount = new MinMaxI(0, 0);
                for (i = 0; i < Toolbox.EnumCount <AirDefenseRange>(); i++)
                {
                    GroupsInArea[i] = new MinMaxI(0, 0);
                }
                SkillLevel = new DCSSkillLevel[] { DCSSkillLevel.Average };

                return;
            }

            EmbeddedChance    = Toolbox.Clamp(ini.GetValue <int>("AirDefense", $"{airDefenseLevel}.Embedded.Chance"), 0, 100) / 100.0;
            EmbeddedUnitCount = ini.GetValue <MinMaxI>("AirDefense", $"{airDefenseLevel}.Embedded.UnitCount");

            for (i = 0; i < Toolbox.EnumCount <AirDefenseRange>(); i++)
            {
                GroupsInArea[i] = ini.GetValue <MinMaxI>("AirDefense", $"{airDefenseLevel}.GroupsInArea.{(AirDefenseRange)i}");
            }

            SkillLevel = ini.GetValueArray <DCSSkillLevel>("AirDefense", $"{airDefenseLevel}.SkillLevel").Distinct().ToArray();
            if (SkillLevel.Length == 0)
            {
                SkillLevel = new DCSSkillLevel[] { DCSSkillLevel.Average, DCSSkillLevel.Good, DCSSkillLevel.High, DCSSkillLevel.Excellent }
            }
            ;
        }
    }
Exemplo n.º 17
0
 internal void LoadFromFile(INIFile ini, string section, string key)
 {
     Options        = ini.GetValueArray <ObjectiveOption>(section, $"{key}.Options").ToList();
     Target         = ini.GetValue <string>(section, $"{key}.Target");
     TargetBehavior = ini.GetValue <string>(section, $"{key}.TargetBehavior");
     TargetCount    = ini.GetValue <Amount>(section, $"{key}.TargetCount");
     Task           = ini.GetValue <string>(section, $"{key}.Task");
 }
Exemplo n.º 18
0
        /// <summary>
        /// Loads a campaign 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))
            {
                ContextCoalitionsBlue  = ini.GetValue("Context", "Coalitions.Blue", ContextCoalitionsBlue);
                ContextCoalitionPlayer = ini.GetValue("Context", "Coalition.Player", ContextCoalitionPlayer);
                ContextCoalitionsRed   = ini.GetValue("Context", "Coalitions.Red", ContextCoalitionsRed);
                ContextDecade          = ini.GetValue("Context", "Decade", ContextDecade);
                ContextTheaterID       = ini.GetValue("Context", "TheaterID", ContextTheaterID);

                EnvironmentBadWeatherChance   = ini.GetValue("Environment", "BadWeatherChance", EnvironmentBadWeatherChance);
                EnvironmentNightMissionChance = ini.GetValue("Environment", "NightMissionChance", EnvironmentNightMissionChance);

                MissionsCount = ini.GetValue("Missions", "Count", MissionsCount);
                MissionsDifficultyVariation = ini.GetValue("Missions", "DifficultyVariation", MissionsDifficultyVariation);
                MissionsObjectiveCount      = ini.GetValue("Missions", "ObjectiveCount", MissionsObjectiveCount);
                MissionsObjectiveDistance   = ini.GetValue("Missions", "ObjectiveDistance", MissionsObjectiveDistance);

                Objectives = ini.GetValueArray <string>("Objectives", "Objectives");

                OptionsCivilianTraffic            = ini.GetValue("Options", "CivilianTraffic", OptionsCivilianTraffic);
                OptionsTheaterCountriesCoalitions = ini.GetValue("Options", "TheaterRegionsCoalitions", OptionsTheaterCountriesCoalitions);

                PlayerAircraft        = ini.GetValue("Player", "Aircraft", PlayerAircraft);
                PlayerStartingAirbase = ini.GetValue("Player", "StartingAirbase", PlayerStartingAirbase);
                PlayerCarrier         = ini.GetValue("Player", "StartingCarrier", PlayerCarrier);
                PlayerStartLocation   = ini.GetValue("Player", "StartLocation", PlayerStartLocation);

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

                SituationEnemyAirDefense    = ini.GetValue("Situation", "Enemy.AirDefense", SituationEnemyAirDefense);
                SituationEnemyAirForce      = ini.GetValue("Situation", "Enemy.AirForce", SituationEnemyAirForce);
                SituationFriendlyAirDefense = ini.GetValue("Situation", "Friendly.AirDefense", SituationFriendlyAirDefense);
                SituationFriendlyAirForce   = ini.GetValue("Situation", "Friendly.AirForce", SituationFriendlyAirForce);

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

            return(true);
        }
        /// <summary>
        /// Loads data required by this definition.
        /// </summary>
        /// <param name="ini">INI file to load definition from.</param>
        /// <returns>True is successful, false if an error happened.</returns>
        protected override bool OnLoad(INIFile ini)
        {
            int i;

            // [Theater] section
            DCSID               = ini.GetValue <string>("Theater", "DCSID");
            DefaultMapCenter    = ini.GetValue <Coordinates>("Theater", "DefaultMapCenter");
            RequiredModules     = ini.GetValueArray <string>("Theater", "RequiredModules");
            MagneticDeclination = ini.GetValue <float>("Theater", "MagneticDeclination");

            // [Daytime] section
            DayTime = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                DayTime[i] = ini.GetValue <MinMaxI>("Daytime", ((Month)i).ToString());
            }

            // [Temperature] section
            Temperature = new MinMaxI[12];
            for (i = 0; i < 12; i++)
            {
                Temperature[i] = ini.GetValue <MinMaxI>("Temperature", ((Month)i).ToString());
            }

            // [Weather] section
            Weather = new DefinitionTheaterWeather[HQTools.EnumCount <Weather>() - 1]; // -1 because we don't want "Random"
            for (i = 0; i < Weather.Length; i++)
            {
                Weather[i] = new DefinitionTheaterWeather(ini, ((Weather)i).ToString());
            }

            // [Wind] section
            Wind = new DefinitionTheaterWind[HQTools.EnumCount <Wind>() - 1]; // -1 because we don't want "Auto"
            for (i = 0; i < Wind.Length; i++)
            {
                Wind[i] = new DefinitionTheaterWind(ini, ((Wind)i).ToString());
            }

            // [Airbases] section
            Airbases = new DefinitionTheaterAirbase[ini.GetTopLevelKeysInSection("Airbases").Length];
            i        = 0;
            foreach (string k in ini.GetTopLevelKeysInSection("Airbases"))
            {
                Airbases[i] = new DefinitionTheaterAirbase(ini, k); i++;
            }

            // [SpawnPoints] section
            SpawnPoints = new DefinitionTheaterSpawnPoint[ini.GetKeysInSection("SpawnPoints").Length];
            i           = 0;
            foreach (string k in ini.GetKeysInSection("SpawnPoints"))
            {
                SpawnPoints[i] = new DefinitionTheaterSpawnPoint(ini, k); i++;
            }

            ResetUsedSpawnPoints();

            return(true);
        }
Exemplo n.º 20
0
        private bool Load(INIFile ini)
        {
            BriefingMissionName        = ini.GetValue("Briefing", "MissionName", BriefingMissionName);
            BriefingMissionDescription = ini.GetValue("Briefing", "MissionDescription", BriefingMissionDescription);

            ContextCoalitionBlue   = ini.GetValue("Context", "CoalitionBlue", ContextCoalitionBlue);
            ContextCoalitionRed    = ini.GetValue("Context", "CoalitionRed", ContextCoalitionRed);
            ContextDecade          = ini.GetValue("Context", "Decade", ContextDecade);
            ContextPlayerCoalition = ini.GetValue("Context", "PlayerCoalition", ContextPlayerCoalition);
            ContextTheater         = ini.GetValue("Context", "Theater", ContextTheater);
            ContextSituation       = ini.GetValue("Context", "Situation", ContextSituation);

            EnvironmentSeason        = ini.GetValue("Environment", "Season", EnvironmentSeason);
            EnvironmentTimeOfDay     = ini.GetValue("Environment", "TimeOfDay", EnvironmentTimeOfDay);
            EnvironmentWeatherPreset = ini.GetValue("Environment", "WeatherPreset", EnvironmentWeatherPreset);
            EnvironmentWind          = ini.GetValue("Environment", "Wind", EnvironmentWind);

            FlightPlanObjectiveDistance      = ini.GetValue("FlightPlan", "ObjectiveDistance", FlightPlanObjectiveDistance);
            FlightPlanObjectiveSeperation    = ini.GetValue("FlightPlan", "ObjectiveSeperation", FlightPlanObjectiveSeperation);
            FlightPlanTheaterStartingAirbase = ini.GetValue("FlightPlan", "TheaterStartingAirbase", FlightPlanTheaterStartingAirbase);

            MissionFeatures = ini.GetValueDistinctList <string>("MissionFeatures", "MissionFeatures");

            Mods = ini.GetValueArray <string>("Mods", "Mods").ToList();

            Objectives.Clear();
            foreach (string key in ini.GetTopLevelKeysInSection("Objectives"))
            {
                Objectives.Add(new MissionTemplateObjective(ini, "Objectives", key));
            }

            OptionsFogOfWar = ini.GetValue("Options", "FogOfWar", OptionsFogOfWar);
            OptionsMission  = ini.GetValueDistinctList <string>("Options", "Mission");
            OptionsRealism  = ini.GetValueDistinctList <RealismOption>("Options", "Realism");

            PlayerFlightGroups.Clear();
            foreach (string key in ini.GetTopLevelKeysInSection("PlayerFlightGroups"))
            {
                PlayerFlightGroups.Add(new MissionTemplateFlightGroup(ini, "PlayerFlightGroups", key));
            }

            AircraftPackages.Clear();
            foreach (string key in ini.GetTopLevelKeysInSection("AircraftPackages"))
            {
                AircraftPackages.Add(new MissionTemplatePackage(ini, "AircraftPackages", key));
            }

            SituationEnemySkill      = ini.GetValue("Situation", "EnemySkill", SituationEnemySkill);
            SituationEnemyAirDefense = ini.GetValue("Situation", "EnemyAirDefense", SituationEnemyAirDefense);
            SituationEnemyAirForce   = ini.GetValue("Situation", "EnemyAirForce", SituationEnemyAirForce);

            SituationFriendlySkill      = ini.GetValue("Situation", "FriendlySkill", SituationFriendlySkill);
            SituationFriendlyAirDefense = ini.GetValue("Situation", "FriendlyAirDefense", SituationFriendlyAirDefense);
            SituationFriendlyAirForce   = ini.GetValue("Situation", "FriendlyAirForce", SituationFriendlyAirForce);

            AssignAliases();
            return(true);
        }
Exemplo n.º 21
0
 internal void LoadFromFile(INIFile ini, string section, string key)
 {
     Features       = Database.Instance.CheckIDs <DBEntryFeatureObjective>(ini.GetValueArray <string>(section, $"{key}.Features")).ToList();
     Options        = ini.GetValueArray <ObjectiveOption>(section, $"{key}.Options").ToList();
     Preset         = ini.GetValue <string>(section, $"{key}.Preset");
     Target         = ini.GetValue <string>(section, $"{key}.Target");
     TargetBehavior = ini.GetValue <string>(section, $"{key}.TargetBehavior");
     TargetCount    = ini.GetValue <Amount>(section, $"{key}.TargetCount");
     Task           = ini.GetValue <string>(section, $"{key}.Task");
     foreach (var subKey in ini.GetKeysInSection(section)
              .Where(x => x.Contains(key))
              .Select(x => x.Split(".")[1])
              .Where(x => x.Contains("subtask"))
              .Distinct().ToList())
     {
         SubTasks.Add(new MissionTemplateSubTask(ini, section, $"{key}.{subKey}"));
     }
 }
Exemplo n.º 22
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="filePath">Path to the Preferences.ini file.</param>
        public Preferences(string filePath)
        {
            using (INIFile ini = new INIFile(filePath))
            {
                // Load common settings
                BuildNodes              = ini.GetValue("Options", "BuildNodes", false);
                Doom1Format             = ini.GetValue("Options", "Doom1Format", false);
                Episode                 = Math.Max(1, Math.Min(9, ini.GetValue("Options", "Episode", 1)));
                GenerateEntranceAndExit = ini.GetValue("Options", "GenerateEntranceAndExit", true);
                GenerateThings          = ini.GetValue("Options", "GenerateThings", true);

                // Load things
                ThingsTypes = new int[THINGS_CATEGORY_COUNT][];
                ThingsCount = new int[THINGS_CATEGORY_COUNT][];
                for (int i = 0; i < THINGS_CATEGORY_COUNT; i++)
                {
                    ThingsTypes[i] = ini.GetValueArray <int>("Things", $"Types.{(ThingCategory)i}");
                    ThingsCount[i] = ini.GetValueArray <int>("Things", $"Count.{(ThingCategory)i}");
                    Array.Resize(ref ThingsCount[i], 2);
                    ThingsCount[i] = new int[] { Math.Min(ThingsCount[i][0], ThingsCount[i][1]), Math.Max(ThingsCount[i][0], ThingsCount[i][1]) };
                }

                // Load themes. Default theme is loaded first so it can't be overriden.
                Themes = new Dictionary <int, PreferencesTheme>
                {
                    { DEFAULT_THEME_COLOR, new PreferencesTheme(ini, "Theme.Default") }
                };

                foreach (string theme in ini.GetKeysInSection("Themes"))
                {
                    Color?c = Toolbox.GetColorFromString(ini.GetValue <string>("Themes", theme));
                    if (!c.HasValue)
                    {
                        continue;
                    }
                    if (Themes.ContainsKey(c.Value.ToArgb()))
                    {
                        continue;
                    }

                    Themes.Add(c.Value.ToArgb(), new PreferencesTheme(ini, $"Theme.{theme}"));
                }
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>
        protected override bool OnLoad(string iniFilePath)
        {
            int i, j;

            DefaultUnits = new string[Toolbox.UNITFAMILIES_COUNT, Toolbox.DECADES_COUNT][];
            for (i = 0; i < Toolbox.UNITFAMILIES_COUNT; i++)
            {
                for (j = 0; j < Toolbox.DECADES_COUNT; j++)
                {
                    DefaultUnits[i, j] = new string[0];
                }
            }

            using (INIFile ini = new INIFile(iniFilePath))
            {
                foreach (UnitFamily family in Toolbox.GetEnumValues <UnitFamily>())
                {
                    foreach (Decade decade in Toolbox.GetEnumValues <Decade>())
                    {
                        string[] units = GetValidDBEntryIDs <DBEntryUnit>(ini.GetValueArray <string>($"{decade}", $"{family}"), out string[] invalidUnits);

                        foreach (string u in invalidUnits)
                        {
                            DebugLog.Instance.WriteLine($"Unit \"{u}\" not found in default unit list \"{ID}\".", DebugLogMessageErrorLevel.Warning);
                        }

                        if (units.Length == 0)
                        {
                            continue;
                        }

                        for (i = (int)decade; i <= (int)Decade.Decade2020; i++)
                        {
                            DefaultUnits[(int)family, i] = units.ToArray();
                        }
                    }
                }
            }

            for (i = 0; i < Toolbox.UNITFAMILIES_COUNT; i++)
            {
                for (j = 0; j < Toolbox.DECADES_COUNT; j++)
                {
                    if (DefaultUnits[i, j].Length == 0)
                    {
                        DebugLog.Instance.WriteLine($"Default unit list \"{ID}\" has no unit of family \"{(UnitFamily)i}\" during {(Decade)j}, unit list was ignored.", DebugLogMessageErrorLevel.Warning);
                        return(false);
                    }
                }
            }


            return(true);
        }
Exemplo n.º 24
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">INI file</param>
        public DBEntryUnitAircraftData(INIFile ini)
        {
            AirToAirRating[0] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.Default"));
            AirToAirRating[1] = Math.Max(1, ini.GetValue <int>("Aircraft", "A2ARating.AirToAir"));

            CarrierTypes = ini.GetValueArray <CarrierType>("Aircraft", "CarrierTypes").Distinct().ToArray();

            CruiseAltitude = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseAltitude")) * Toolbox.FEET_TO_METERS);
            CruiseSpeed    = (int)(Math.Max(0, ini.GetValue <int>("Aircraft", "CruiseSpeed")) * Toolbox.KNOTS_TO_METERS_PER_SECOND);

            PlayerControllable = ini.GetValue <bool>("Aircraft", "PlayerControllable");
            PropsLua           = ini.GetValue <string>("Aircraft", "PropsLua");

            RadioFrequency  = ini.GetValue <float>("Aircraft", "Radio.Frequency");
            RadioModulation = ini.GetValue <RadioModulation>("Aircraft", "Radio.Modulation");

            PayloadCommon = ini.GetValue <string>("Aircraft", "Payload.Common");
            foreach (Decade decade in Enum.GetValues(typeof(Decade)))
            {
                PayloadTasks.Add(decade, new Dictionary <UnitTaskPayload, string[]>());
                foreach (UnitTaskPayload task in Enum.GetValues(typeof(UnitTaskPayload)))
                {
                    PayloadTasks[decade].Add(task, new string[MAX_PYLONS]);
                    for (var pylonIndex = 0; pylonIndex < MAX_PYLONS; pylonIndex++)
                    {
                        PayloadTasks[decade][task][pylonIndex] = ini.GetValue <string>("Aircraft", $"Payload.{decade}.Task.{task}.Pylon{pylonIndex + 1:00}");
                    }
                }
            }
            RadioPresets = new List <RadioPreset>();
            for (int i = 0; i < 4; i++)
            {
                if (ini.ValueExists("Aircraft", $"Radio.Presets.{i}.Channels"))
                {
                    RadioPresets.Add(new RadioPreset {
                        Channels    = ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Channels"),
                        Modulations = ini.GetValueArray <int>("Aircraft", $"Radio.Presets.{i}.Modulations")
                    });
                }
            }
        }
        /// <summary>
        /// Loads a campaign 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))
            {
                ContextCoalitionsBlue           = ini.GetValue("Context", "Coalitions.Blue", ContextCoalitionsBlue);
                ContextCoalitionsRed            = ini.GetValue("Context", "Coalitions.Red", ContextCoalitionsRed);
                ContextDecade                   = ini.GetValue("Context", "Decade", ContextDecade);
                ContextTheaterID                = ini.GetValue("Context", "TheaterID", ContextTheaterID);
                ContextTheaterRegionsCoalitions = ini.GetValue("Context", "TheaterRegionsCoalitions", ContextTheaterRegionsCoalitions);

                EnvironmentBadWeatherChance   = ini.GetValue("Environment", "BadWeatherChance", EnvironmentBadWeatherChance);
                EnvironmentNightMissionChance = ini.GetValue("Environment", "NightMissionChance", EnvironmentNightMissionChance);

                MissionsCount             = ini.GetValue("Missions", "Count", MissionsCount);
                MissionsObjectiveCount    = ini.GetValue("Missions", "ObjectiveCount", MissionsObjectiveCount);
                MissionsObjectiveDistance = ini.GetValue("Missions", "ObjectiveDistance", MissionsObjectiveDistance);
                MissionsTypes             = ini.GetValueArray <string>("Missions", "Types");

                OptionsPreferences = ini.GetValueArray <MissionTemplatePreferences>("Options", "Preferences");
                OptionsUnitMods    = ini.GetValueArray <string>("Options", "UnitMods");

                PlayerAircraft      = ini.GetValue("Player", "Aircraft", PlayerAircraft);
                PlayerCoalition     = ini.GetValue("Player", "Coalition", PlayerCoalition);
                PlayerStartLocation = ini.GetValue("Player", "StartLocation", PlayerStartLocation);

                SituationEnemyAirDefense    = ini.GetValue("Situation", "Enemy.AirDefense", SituationEnemyAirDefense);
                SituationEnemyAirForce      = ini.GetValue("Situation", "Enemy.AirForce", SituationEnemyAirForce);
                SituationFriendlyAirDefense = ini.GetValue("Situation", "Friendly.AirDefense", SituationFriendlyAirDefense);
                SituationFriendlyAirForce   = ini.GetValue("Situation", "Friendly.AirForce", SituationFriendlyAirForce);
                SituationVariation          = ini.GetValue("Situation", "Variation", SituationVariation);
            }

            return(true);
        }
Exemplo n.º 26
0
        /// <summary>
        /// Main application entry point.
        /// </summary>
        /// <param name="settingINIFile">Path to the settings .ini file to use</param>
        public void Run(string settingINIFile)
        {
            if (!File.Exists(settingINIFile))
            {
                Console.WriteLine($"File {settingINIFile} not found.");
                return;
            }

            string twitchChannel, twitchIRCToken;

            AdminModeEnabled = false;
            KeyboardCommands = new Dictionary <string, KeyboardCommand>(StringComparer.InvariantCultureIgnoreCase);
            InputSender      = new KeyboardInputSender();
            Teams            = new Dictionary <string, int>();

            using (INIFile ini = new INIFile(settingINIFile))
            {
                twitchChannel  = ini.GetValue <string>("Global", "Channel").Trim();
                twitchIRCToken = ini.GetValue <string>("Global", "Token").Trim();
                UserAdmins     = (from string u in ini.GetValueArray <string>("Global", "UserAdmins")
                                  where !string.IsNullOrEmpty(u.Trim()) select u.Trim().ToLowerInvariant()).Distinct().ToArray();
                Console.WriteLine($"The following users are admins: {string.Join(", ", UserAdmins)}");

                if (ini.GetValue <bool>("Global", "LogToFile"))
                {
                    LogWriter = File.AppendText($"{twitchChannel}.txt");
                }

                if (string.IsNullOrEmpty(twitchChannel) || string.IsNullOrEmpty(twitchIRCToken))
                {
                    Console.WriteLine($"Twitch channel and twitch IRC token not set in file {settingINIFile}. Aborting.");
                    return;
                }

                foreach (string tlk in ini.GetTopLevelKeysInSection("Keyboard"))
                {
                    string command = ini.GetValue <string>("Keyboard", $"{tlk}.Message").Trim().ToLowerInvariant();
                    if (string.IsNullOrEmpty(command) || KeyboardCommands.ContainsKey(command))
                    {
                        continue;
                    }

                    KeyboardCommands.Add(command, new KeyboardCommand(ini, tlk));
                }
            }

            Listener = new TwitchChatListener(twitchChannel, twitchIRCToken);
            Listener.OnTwitchChatMessage     += OnTwitchChatMessage;
            Listener.OnTwitchChatUserMessage += OnTwitchChatUserMessage;
            Console.WriteLine("Beginning to listen to the Twitch chat, press CTRL+C to close");
            Listener.BeginListening();
        }
Exemplo n.º 27
0
        protected override bool OnLoad(INIFile ini)
        {
            BriefingDescription = ini.GetValue <string>("Objective", "Briefing.Description");
            BriefingRemarks     = ini.GetValueArray <string>("Objective", "Briefing.Remarks");
            BriefingTask        = ini.GetValue <string>("Objective", "Briefing.Task");

            FGTasking = ini.GetValue <DCSFlightGroupTask>("Objective", "FlightGroup.Tasking");

            IncludeLua = new string[HQTools.EnumCount <ObjectiveScriptRepetition>(), HQTools.EnumCount <ObjectiveScriptScope>()][];
            foreach (ObjectiveScriptRepetition rep in HQTools.EnumValues <ObjectiveScriptRepetition>())
            {
                foreach (ObjectiveScriptScope scope in HQTools.EnumValues <ObjectiveScriptScope>())
                {
                    IncludeLua[(int)rep, (int)scope] = ini.GetValueArray <string>("Include", $"Lua.{rep}.{scope}");
                }
            }
            IncludeOgg = ini.GetValueArray <string>("Include", "Ogg");

            SpawnPointType = ini.GetValueArray <TheaterLocationSpawnPointType>("Objective", "SpawnPoint.Type");
            if (SpawnPointType.Length == 0)
            {
                SpawnPointType = new TheaterLocationSpawnPointType[] { TheaterLocationSpawnPointType.LandMedium, TheaterLocationSpawnPointType.LandLarge }
            }
            ;

            WaypointInaccuracy = ini.GetValue <MinMaxD>("Objective", "Waypoint.Inaccuracy");
            WaypointOnGround   = ini.GetValue <bool>("Objective", "Waypoint.OnGround");

            UnitGroups = new DefinitionObjectiveUnitGroup[HQTools.EnumCount <ObjectiveUnitGroupRole>()];

            foreach (ObjectiveUnitGroupRole role in HQTools.EnumValues <ObjectiveUnitGroupRole>())
            {
                UnitGroups[(int)role] = new DefinitionObjectiveUnitGroup(ini, role.ToString());
            }

            return(true);
        }
    }
Exemplo n.º 28
0
        /// <summary>
        /// Loads data required by this definition.
        /// </summary>
        /// <param name="ini">The ini file to load from.</param>
        /// <returns>True is successful, false if an error happened.</returns>
        protected override bool OnLoad(INIFile ini)
        {
            // -------------------
            // [Coalition] section
            // -------------------
            DisplayName = ini.GetValue <string>("Coalition", "DisplayName");

            MinMaxI timePeriodInteger = ini.GetValue <MinMaxI>("Coalition", "TimePeriod");

            MinMaxTimePeriod = new TimePeriod[] { (TimePeriod)timePeriodInteger.Min, (TimePeriod)timePeriodInteger.Max };

            NATOCallsigns = ini.GetValue <bool>("Coalition", "NATOCallsigns");
            UnitSystem    = ini.GetValue <UnitSystem>("Coalition", "UnitSystem");
            if (UnitSystem == UnitSystem.ByCoalition)
            {
                UnitSystem = UnitSystem.Metric;
            }
            RequiredModules = ini.GetValueArray <string>("Coalition", "RequiredModules");
            Countries       = ini.GetValueArray <DCSCountry>("Coalition", "Countries").Distinct().ToArray();
            if (Countries.Length == 0)
            {
                MessageBox.Show($"Failed to load coalition definition {ID.ToUpperInvariant()}, no countries assigned to coalition.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return(false); // No countries, bad coalition
            }

            // ---------------
            // [Units] section
            // ---------------
            Units = ini.GetAllValuesInSectionAsStringArray("Units");

            // ---------------------
            // [LegacyUnits] section
            // ---------------------
            LegacyUnits = ini.GetAllValuesInSectionAsStringArray("LegacyUnits");

            return(true);
        }
Exemplo n.º 29
0
        /// <summary>
        /// Loads a database entry from an .ini file.
        /// </summary>
        /// <param name="iniFilePath">Path to the .ini file where entry inforation is stored</param>
        /// <returns>True is successful, false if an error happened</returns>
        protected override bool OnLoad(string iniFilePath)
        {
            int i;

            using (INIFile ini = new INIFile(iniFilePath))
            {
                BriefingElements = new string[Toolbox.EnumCount <CoalitionBriefingElement>()][];
                for (i = 0; i < BriefingElements.Length; i++)
                {
                    BriefingElements[i] = ini.GetValueArray <string>("Briefing", $"Elements.{(CoalitionBriefingElement)i}");
                }

                Countries = ini.GetValueArray <string>("Coalition", "Countries");
                string[] invalidCountries = (from string country in Countries where !Database.Instance.Countries.Contains(country, StringComparer.InvariantCultureIgnoreCase) select country).ToArray();
                foreach (string country in invalidCountries)
                {
                    DebugLog.Instance.WriteLine($"Country \"{country}\" required by coalition \"{ID}\" not found.", DebugLogMessageErrorLevel.Warning);
                }
                Countries = (from string country in Countries where Database.Instance.Countries.Contains(country, StringComparer.InvariantCultureIgnoreCase) select country.ToLowerInvariant()).ToArray();
                if (Countries.Length == 0)
                {
                    DebugLog.Instance.WriteLine($"No valid country found for coalition \"{ID}\", coalition was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }

                DefaultUnitList = ini.GetValue <string>("Coalition", "DefaultUnitList");
                if (!Database.Instance.EntryExists <DBEntryDefaultUnitList>(DefaultUnitList))
                {
                    DebugLog.Instance.WriteLine($"Default unit list \"{DefaultUnitList}\" required by coalition \"{ID}\" doesn't exist. Coalition was ignored.", DebugLogMessageErrorLevel.Warning);
                    return(false);
                }

                NATOCallsigns = ini.GetValue("Coalition", "NATOCallsigns", false);
            }

            return(true);
        }
Exemplo n.º 30
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="ini">Ini file to load from</param>
        /// <param name="section">Theme section in the ini file</param>
        public PreferencesTheme(INIFile ini, string section)
        {
            int i;

            Height        = new int[THEME_SECTORS_COUNT][];
            LightLevel    = new int[THEME_SECTORS_COUNT];
            SectorSpecial = new int[THEME_SECTORS_COUNT];

            for (i = 0; i < THEME_SECTORS_COUNT; i++)
            {
                Height[i] = ini.GetValueArray <int>(section, $"Height.{(ThemeSector)i}");
                if (Height[i].Length == 0)
                {
                    Height[i] = new int[] { 0, 64 }
                }
                ;
                else if (Height[i].Length == 1)
                {
                    Height[i] = new int[] { 0, Height[i][1] }
                }
                ;
                Height[i] = new int[] { Math.Min(Height[i][0], Height[i][1]), Math.Max(Height[i][0], Height[i][1]) };

                LightLevel[i] = ini.GetValue(section, $"LightLevel.{(ThemeSector)i}", -1);
                LightLevel[i] = Toolbox.Clamp(LightLevel[i], 0, 255);

                SectorSpecial[i] = ini.GetValue(section, $"SectorSpecial.{(ThemeSector)i}", 0);
                SectorSpecial[i] = Math.Max(0, SectorSpecial[i]);
            }

            Textures = new string[THEME_TEXTURES_COUNT][];
            for (i = 0; i < THEME_TEXTURES_COUNT; i++)
            {
                Textures[i] = ini.GetValueArray <string>(section, $"Textures.{(ThemeTexture)i}");
            }
        }
    }