Exemplo n.º 1
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));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a BriefingRoom skill level to a DCS World skill level.
        /// </summary>
        /// <param name="skillLevel">A BriefingRoom skill level</param>
        /// <returns>A DCS World skill level.</returns>
        public static DCSSkillLevel BRSkillLevelToDCSSkillLevel(BRSkillLevel skillLevel)
        {
            switch (skillLevel)
            {
            //case BRSkillLevel.Random
            default:
                return(RandomFrom(DCSSkillLevel.Average, DCSSkillLevel.Good, DCSSkillLevel.High, DCSSkillLevel.Excellent));

            case BRSkillLevel.Rookie: return(DCSSkillLevel.Average);

            case BRSkillLevel.Regular: return(DCSSkillLevel.Good);

            case BRSkillLevel.Veteran: return(DCSSkillLevel.High);

            case BRSkillLevel.Ace: return(DCSSkillLevel.Excellent);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="unitMaker">Unit maker class to use to generate units</param>
        public MissionGeneratorAirDefense(UnitMaker unitMaker, bool _ally, MissionTemplate template, DCSMission mission)
        {
            UnitMaker = unitMaker;
            ally      = _ally;
            if (ally)
            {
                airDefense               = template.SituationFriendlyAirDefense.Get();
                centerPoint              = mission.InitialPosition;
                opposingPoint            = mission.ObjectivesCenter;
                distsFromCenter          = Database.Instance.Common.AllyAirDefenseDistanceFromTakeOffLocation;
                minDistFromOpposingPoint = Database.Instance.Common.AllyAirDefenseDistanceFromObjectives;
                skillLevel               = template.SituationFriendlyAISkillLevel;
                optionsShowEnemyUnits    = 0;
                return;
            }

            airDefense               = template.SituationEnemyAirDefense.Get();
            centerPoint              = mission.ObjectivesCenter;
            opposingPoint            = mission.InitialPosition;
            distsFromCenter          = Database.Instance.Common.EnemyAirDefenseDistanceFromObjectives;
            minDistFromOpposingPoint = Database.Instance.Common.EnemyAirDefenseDistanceFromTakeOffLocation;
            skillLevel               = template.SituationEnemySkillLevelGround;
            optionsShowEnemyUnits    = template.Realism.Contains(RealismOption.HideEnemyUnits) ? DCSMissionUnitGroupFlags.Hidden : 0;
        }