Exemple #1
0
        private AmountN GetPowerLevel(AmountN amount, CampaignDifficultyVariation variation, int missionIndex, int missionsCount)
        {
            if (amount == AmountN.Random)
            {
                return(AmountN.Random);
            }
            if (variation == CampaignDifficultyVariation.Steady)
            {
                return(amount);
            }

            double campaignProgress = missionIndex / (double)(Math.Max(2, missionsCount) - 1.0);

            double amountOffset = 0;

            switch (variation)
            {
            case CampaignDifficultyVariation.ConsiderablyEasier: amountOffset = -3.5; break;

            case CampaignDifficultyVariation.MuchEasier: amountOffset = -2.25; break;

            case CampaignDifficultyVariation.SomewhatEasier: amountOffset = -1.5; break;

            case CampaignDifficultyVariation.SomewhatHarder: amountOffset = 1.5; break;

            case CampaignDifficultyVariation.MuchHarder: amountOffset = 2.25; break;

            case CampaignDifficultyVariation.ConsiderablyHarder: amountOffset = 3.5; break;
            }
            double amountDouble = (double)amount + amountOffset * campaignProgress;

            return((AmountN)Toolbox.Clamp((int)amountDouble, (int)AmountN.VeryLow, (int)AmountN.VeryHigh));
        }
        /// <summary>
        /// Resets all properties to their default values.
        /// </summary>
        public void Clear()
        {
            ContextCoalitionsBlue           = TemplateTools.CheckValue <DBEntryCoalition>(Database.Instance.Common.DefaultCoalitionBlue);
            ContextCoalitionsRed            = TemplateTools.CheckValue <DBEntryCoalition>(Database.Instance.Common.DefaultCoalitionRed);
            ContextDecade                   = Decade.Decade2000;
            ContextTheaterID                = TemplateTools.CheckValue <DBEntryTheater>(Database.Instance.Common.DefaultTheater);
            ContextTheaterRegionsCoalitions = CountryCoalition.Default;

            EnvironmentBadWeatherChance   = AmountN.Random;
            EnvironmentNightMissionChance = AmountN.Random;

            MissionsCount             = 5;
            MissionsObjectiveCount    = Amount.Average;
            MissionsObjectiveDistance = Amount.Average;
            MissionsTypes             = new string[] { Database.Instance.Common.DefaultObjective };

            OptionsPreferences = new MissionTemplatePreferences[0];
            OptionsUnitMods    = new string[0];

            PlayerAircraft      = TemplateTools.CheckValuePlayerAircraft(Database.Instance.Common.DefaultPlayerAircraft);
            PlayerCoalition     = Coalition.Blue;
            PlayerStartLocation = PlayerStartLocation.Runway;

            SituationEnemyAirDefense    = AmountN.Random;
            SituationEnemyAirForce      = AmountN.Random;
            SituationFriendlyAirDefense = AmountN.Random;
            SituationFriendlyAirForce   = AmountN.Random;
            SituationVariation          = CampaignDifficultyVariation.Random;
        }
Exemple #3
0
        private BRSkillLevel GetSkillLevel(AmountN amount, CampaignDifficultyVariation variation, int missionIndex, int missionsCount)
        {
            if (amount == AmountN.Random)
            {
                return(BRSkillLevel.Random);
            }
            double campaignProgress = missionIndex / (double)(Math.Max(2, missionsCount) - 1.0);

            BRSkillLevel baseSkillLevel = BRSkillLevel.Regular;

            switch (amount)
            {
            case AmountN.VeryLow: baseSkillLevel = BRSkillLevel.Rookie; break;

            case AmountN.Low: baseSkillLevel = Toolbox.RandomFrom(BRSkillLevel.Rookie, BRSkillLevel.Regular); break;

            case AmountN.Average: baseSkillLevel = Toolbox.RandomFrom(BRSkillLevel.Rookie, BRSkillLevel.Regular, BRSkillLevel.Veteran); break;

            case AmountN.High: baseSkillLevel = Toolbox.RandomFrom(BRSkillLevel.Veteran, BRSkillLevel.Ace); break;

            case AmountN.VeryHigh: baseSkillLevel = BRSkillLevel.Ace; break;
            }

            if (variation == CampaignDifficultyVariation.Steady)
            {
                return(baseSkillLevel);
            }

            double amountOffset = 0;

            switch (variation)
            {
            case CampaignDifficultyVariation.ConsiderablyEasier: amountOffset = -2.25; break;

            case CampaignDifficultyVariation.MuchEasier: amountOffset = -1.5; break;

            case CampaignDifficultyVariation.SomewhatEasier: amountOffset = -1.0; break;

            case CampaignDifficultyVariation.SomewhatHarder: amountOffset = 1.0; break;

            case CampaignDifficultyVariation.MuchHarder: amountOffset = 1.5; break;

            case CampaignDifficultyVariation.ConsiderablyHarder: amountOffset = 2.25; break;
            }
            double skillDouble = (double)baseSkillLevel + amountOffset * campaignProgress;

            return((BRSkillLevel)Toolbox.Clamp((int)skillDouble, (int)BRSkillLevel.Regular, (int)BRSkillLevel.Ace));
        }
Exemple #4
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);
                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");

                OptionsCivilianTraffic = ini.GetValue("Options", "CivilianTraffic", OptionsCivilianTraffic);
                OptionsPreferences     = ini.GetValueArray <MissionTemplatePreferences>("Options", "Preferences");
                OptionsRealism         = ini.GetValueArray <RealismOption>("Options", "Realism");
                OptionsUnitMods        = ini.GetValueArray <string>("Options", "UnitMods");

                PlayerAircraft        = ini.GetValue("Player", "Aircraft", PlayerAircraft);
                PlayerCoalition       = ini.GetValue("Player", "Coalition", PlayerCoalition);
                PlayerStartingAirbase = ini.GetValue("Player", "StartingAirbase", PlayerStartingAirbase);
                PlayerStartingCarrier = ini.GetValue("Player", "StartingCarrier", PlayerStartingCarrier);
                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);
        }