public void IfAllOptionsAreDisabledThanFlagAsEmpty() { var table = new WeightedOptionTable <int>(); table.AddEntry(1, 1); table.Disable(1); Assert.True(table.IsEmpty); }
private void DisableOptionsThatAlreadyHaveSkillFocus(WeightedOptionTable <string> skillTable, IEnumerable <SkillFocus> existingSkillFocuses) { foreach (var sf in existingSkillFocuses) { if (sf != this) { ShortLog.DebugFormat("Skill Focus - Disable Skill {0}", sf.CharacterSkill.Name); skillTable.Disable(sf.CharacterSkill.Name); } } }
public void BecauseStringComparisonsCanBeMessyIfFindingEntryByStringUseCaseInsensitiveIfString() { var table = new WeightedOptionTable <string>(); table.AddEntry("Foo", 1); table.AddEntry("Bar", 2); table.Disable("foo"); Assert.Equal(1, table.Enabled.Count()); Assert.True(table.HasOption("bar")); }
public void DisabledEntriesCanBeReenabled() { var table = new WeightedOptionTable <string>(); table.AddEntry("Foo", 483); var entry = table.All.First(); var originalMax = entry.MaximumValue; table.Disable("Foo"); Assert.True(entry.Disabled); table.Enable("Foo"); Assert.False(entry.Disabled); Assert.Equal(originalMax, entry.MaximumValue); }
public void EntriesCanBeDisabledWhichForcesADifferentOptionToBeChosen() { var table = new WeightedOptionTable <string>(); table.AddEntry("Foo", 12); table.AddEntry("Bar", 100); table.Disable("Bar"); for (int i = 0; i < 1000; i++) { var result = table.ChooseRandomly(); Assert.Equal("Foo", result); } }
private void FilterPreferredFeats(CharacterSheet character, WeightedOptionTable <string> preferredFeats, FeatToken token) { foreach (var entry in preferredFeats.All) { var f = feats.Find(entry.Option); if (FeatIsValid(f, token, character)) { preferredFeats.Enable(entry.Option); } else { preferredFeats.Disable(entry.Option); ShortLog.DebugFormat("Preferred Feat [{0}] Token [{1}]- Not meeting requirements", f.Name, token.ToString()); } } }
private CharacterSkill ChooseSkill(SkillRanks skills, WeightedOptionTable <string> preferredSkills, int maxLevel) { if (!preferredSkills.IsEmpty) { var option = preferredSkills.ChooseRandomly(); var skill = skills.GetSkill(option); if (skill.Ranks < maxLevel) { return(skill); } else { preferredSkills.Disable(option); } } else { // no preferred skills so just pick class skills var skill = skills.GetSkills().Where( x => x.ClassSkill && x.Ranks < maxLevel ).ToList().ChooseOne(); // Background skills require special attention // In general just take one background skill if (skill.Skill.IsBackgroundSkill) { if (skill.Ranks > 0 || skills.GetSkills().Where(x => x.Skill.IsBackgroundSkill).All(x => x.Ranks == 0)) { return(skill); } } else { return(skill); } } return(null); }