public void AllDataFromFeatSelectionIsCopiedToFeat()
        {
            var selection = new AdditionalFeatSelection();
            selection.Feat = "additional feat";
            selection.FocusType = "focus type";
            selection.Frequency.Quantity = 9266;
            selection.Frequency.TimePeriod = "frequency time period";
            selection.Power = 12345;

            additionalFeatSelections.Add(selection);

            mockFeatFocusGenerator.SetupSequence(g => g.GenerateFrom("additional feat", "focus type", skills, additionalFeatSelections[0].RequiredFeats, It.IsAny<IEnumerable<Feat>>(), characterClass))
                .Returns("focus").Returns(FeatConstants.Foci.All);

            var feats = additionalFeatsGenerator.GenerateWith(characterClass, race, stats, skills, baseAttack, preselectedFeats);
            var feat = feats.Single();
            Assert.That(feat.Foci.Single(), Is.EqualTo("focus"));
            Assert.That(feat.Frequency.Quantity, Is.EqualTo(9266));
            Assert.That(feat.Frequency.TimePeriod, Is.EqualTo("frequency time period"));
            Assert.That(feat.Name, Is.EqualTo("additional feat"));
            Assert.That(feat.Power, Is.EqualTo(12345));
        }
示例#2
0
        private AdditionalFeatSelection SelectAdditional(string feat)
        {
            var additionalFeatSelection = new AdditionalFeatSelection();
            additionalFeatSelection.Feat = feat;

            var featData = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.AdditionalFeatData, feat).ToArray();
            additionalFeatSelection.RequiredBaseAttack = Convert.ToInt32(featData[DataIndexConstants.AdditionalFeatData.BaseAttackRequirementIndex]);
            additionalFeatSelection.FocusType = featData[DataIndexConstants.AdditionalFeatData.FocusTypeIndex];
            additionalFeatSelection.Frequency.Quantity = Convert.ToInt32(featData[DataIndexConstants.AdditionalFeatData.FrequencyQuantityIndex]);
            additionalFeatSelection.Frequency.TimePeriod = featData[DataIndexConstants.AdditionalFeatData.FrequencyTimePeriodIndex];
            additionalFeatSelection.Power = Convert.ToInt32(featData[DataIndexConstants.AdditionalFeatData.PowerIndex]);
            additionalFeatSelection.RequiredFeats = GetRequiredFeats(additionalFeatSelection.Feat);

            var featsWithClassRequirements = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, GroupConstants.HasClassRequirements);
            if (featsWithClassRequirements.Contains(feat))
            {
                var tableName = string.Format(TableNameConstants.Formattable.Adjustments.FEATClassRequirements, feat);
                additionalFeatSelection.RequiredCharacterClasses = adjustmentsSelector.SelectFrom(tableName);
            }

            var featsWithSkillRequirements = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, GroupConstants.HasSkillRequirements);
            if (featsWithSkillRequirements.Contains(feat))
            {
                var tableName = string.Format(TableNameConstants.Formattable.Adjustments.FEATSkillRankRequirements, feat);
                additionalFeatSelection.RequiredSkillRanks = adjustmentsSelector.SelectFrom(tableName);
            }

            var featWithStatRequirements = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, GroupConstants.HasStatRequirements);
            if (featWithStatRequirements.Contains(feat))
            {
                var tableName = string.Format(TableNameConstants.Formattable.Adjustments.FEATStatRequirements, feat);
                additionalFeatSelection.RequiredStats = adjustmentsSelector.SelectFrom(tableName);
            }

            return additionalFeatSelection;
        }
 private bool FeatsMatch(Feat feat, AdditionalFeatSelection additionalFeatSelection)
 {
     return feat.Frequency.TimePeriod == string.Empty && feat.Name == additionalFeatSelection.Feat
            && feat.Power == additionalFeatSelection.Power
            && feat.Foci.Any() && string.IsNullOrEmpty(additionalFeatSelection.FocusType) == false;
 }
 public void Setup()
 {
     selection = new AdditionalFeatSelection();
     feats = new List<Feat>();
     stats = new Dictionary<string, Stat>();
     stats["stat"] = new Stat("stat");
     skills = new Dictionary<string, Skill>();
     characterClass = new CharacterClass();
 }
        private void AddFeatSelections(int quantity)
        {
            for (var i = 0; i < quantity; i++)
            {
                var selection = new AdditionalFeatSelection();
                selection.Feat = $"feat{i + 1}";

                additionalFeatSelections.Add(selection);
            }
        }