public IEnumerable<CharacterClassFeatSelection> SelectClass(string characterClassName) { var classFeats = collectionsSelector.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, characterClassName); var classFeatSelections = new List<CharacterClassFeatSelection>(); foreach (var classFeat in classFeats) { var tableName = string.Format(TableNameConstants.Formattable.Collection.CLASSFeatData, characterClassName); var featData = collectionsSelector.SelectFrom(tableName, classFeat).ToArray(); var classFeatSelection = new CharacterClassFeatSelection(); classFeatSelection.Feat = featData[DataIndexConstants.CharacterClassFeatData.FeatNameIndex]; classFeatSelection.FocusType = featData[DataIndexConstants.CharacterClassFeatData.FocusTypeIndex]; classFeatSelection.Frequency.Quantity = Convert.ToInt32(featData[DataIndexConstants.CharacterClassFeatData.FrequencyQuantityIndex]); classFeatSelection.Frequency.TimePeriod = featData[DataIndexConstants.CharacterClassFeatData.FrequencyTimePeriodIndex]; classFeatSelection.MinimumLevel = Convert.ToInt32(featData[DataIndexConstants.CharacterClassFeatData.MinimumLevelRequirementIndex]); classFeatSelection.Power = Convert.ToInt32(featData[DataIndexConstants.CharacterClassFeatData.PowerIndex]); classFeatSelection.MaximumLevel = Convert.ToInt32(featData[DataIndexConstants.CharacterClassFeatData.MaximumLevelRequirementIndex]); classFeatSelection.FrequencyQuantityStat = featData[DataIndexConstants.CharacterClassFeatData.FrequencyQuantityStatIndex]; classFeatSelection.RequiredFeats = GetRequiredFeats(classFeat); classFeatSelection.SizeRequirement = featData[DataIndexConstants.CharacterClassFeatData.SizeRequirementIndex]; classFeatSelection.AllowFocusOfAll = Convert.ToBoolean(featData[DataIndexConstants.CharacterClassFeatData.AllowFocusOfAllIndex]); classFeatSelections.Add(classFeatSelection); } return classFeatSelections; }
private Feat BuildFeatFrom(CharacterClassFeatSelection selection, string focus, IEnumerable<Feat> earnedFeat, Dictionary<string, Stat> stats, CharacterClass characterClass, Dictionary<string, Skill> skills) { var feat = new Feat(); feat.Name = selection.Feat; if (string.IsNullOrEmpty(focus) == false) feat.Foci = feat.Foci.Union(new[] { focus }); feat.Frequency = selection.Frequency; feat.Power = selection.Power; if (string.IsNullOrEmpty(selection.FrequencyQuantityStat) == false) feat.Frequency.Quantity += stats[selection.FrequencyQuantityStat].Bonus; if (feat.Frequency.Quantity < 0) feat.Frequency.Quantity = 0; return feat; }
public void Setup() { selection = new CharacterClassFeatSelection(); characterClass = new CharacterClass(); race = new Race(); feats = new List<Feat>(); }
private void AddClassFeat(string className, string feat, string focusType = "", int minimumLevel = 1, int maximumLevel = 0, int frequencyQuantity = 0, string frequencyPeriod = "", int power = 0, params string[] requiredFeatNames) { var selection = new CharacterClassFeatSelection(); selection.Feat = feat; selection.FocusType = focusType; selection.MinimumLevel = minimumLevel; selection.RequiredFeats = requiredFeatNames.Select(f => new RequiredFeatSelection { Feat = f }); selection.Frequency.Quantity = frequencyQuantity; selection.Frequency.TimePeriod = frequencyPeriod; selection.MaximumLevel = maximumLevel; selection.Power = power; selection.AllowFocusOfAll = true; if (classFeatSelections.ContainsKey(className) == false) { classFeatSelections[className] = new List<CharacterClassFeatSelection>(); mockFeatsSelector.Setup(s => s.SelectClass(className)).Returns(classFeatSelections[className]); } classFeatSelections[className].Add(selection); }