private List <SpecialAbility> GetAvailableAbilities(Item targetItem, IEnumerable <string> tableNames, int bonus) { var availableAbilities = new List <SpecialAbility>(); foreach (var tableName in tableNames) { var abilityNames = percentileSelector.SelectAllFrom(tableName); foreach (var abilityName in abilityNames) { if (abilityName == "BonusSpecialAbility") { continue; } var ability = GetSpecialAbility(abilityName); if (ability.RequirementsMet(targetItem) && bonus + ability.BonusEquivalent <= 10) { availableAbilities.Add(ability); } } } return(availableAbilities); }
public IEnumerable <TypeAndAmountSelection> SelectAllFrom(string tablename) { var percentileResults = percentileSelector.SelectAllFrom(tablename); var results = percentileResults.Select(r => ParseResult(r)); return(results); }
public void DecoratorSelectsAllFromInnerSelector() { var percentiles = new[] { "first", "second" }; var replacements = new[] { "third", "fourth" }; mockInnerSelector.Setup(s => s.SelectAllFrom("table")).Returns(percentiles); mockReplacementSelector.Setup(s => s.SelectAll(percentiles, false)).Returns(replacements); var results = decorator.SelectAllFrom("table"); Assert.That(results, Is.EquivalentTo(replacements)); }
private string GetSize(Weapon template) { if (!string.IsNullOrEmpty(template.Size)) { return(template.Size); } if (!template.Traits.Any()) { return(GetRandomSize()); } var allSizes = percentileSelector.SelectAllFrom(TableNameConstants.Percentiles.Set.MundaneGearSizes); var sizeTraits = template.Traits.Intersect(allSizes); if (sizeTraits.Any()) { return(sizeTraits.Single()); } return(GetRandomSize()); }