Пример #1
0
        public void LoadsWealthFromTable()
        {
            var data = new MemoryStore();

            data.SetValue("name", "foo");
            var levels = new MemoryStore();
            var level1 = new MemoryStore();

            level1.SetValue("level", 1);
            level1.SetValue("amount", "0gp");

            var level2 = new MemoryStore();

            level2.SetValue("level", 2);
            level2.SetValue("amount", "220gp");
            levels.AddListItem(level1);
            levels.AddListItem(level2);
            data.SetValue("levels", levels);

            var wealth = new CharacterWealth(data);

            Assert.Equal(wealth.Name, "foo");
            Assert.Equal(wealth.Levels[0].Level, 1);
            Assert.Equal(wealth.Levels[0].Value, 0);
            Assert.Equal(wealth.Levels[1].Level, 2);
            Assert.Equal(wealth.Levels[1].Value, 22000);
        }
Пример #2
0
        public void BreaksDescriptionIntoIndividualComponentsForMoreFlexibleDescriptions()
        {
            // Set up Descriptors
            var descs = new MemoryStore();

            descs.AddListItem(new MemoryStore("pattern", new string[] { "dragon" }));
            descs.AddListItem(new MemoryStore("color", new string[] { "black" }));

            // Set up Templates
            var temps = new MemoryStore();

            temps.AddListItem(new MemoryStore("template", "{{feature}} of a {{descriptor \"color\"}} {{descriptor \"pattern\"}}."));

            // Set up physical Feature
            var mem = new MemoryStore();

            mem.SetValue("name", "tattoo");
            mem.SetValue("descriptors", descs);
            mem.SetValue("templates", temps);
            var phys = new PhysicalFeature(mem);

            var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys);

            var subject = new CreatePhysicalFeatures(gateway);

            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Gender = Gender.Female;

            subject.ExecuteStep(character);

            Assert.Equal(character.Appearance.PhysicalAppearance, "Tattoo of a black dragon.");
        }
Пример #3
0
        public CharacterDesignerTests()
        {
            var data = new MemoryStore();

            data.SetValue("name", "Test One");
            var steps = new MemoryStore();

            steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepOne"));
            steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepTwo"));
            data.SetValue("steps", steps);

            subject = new CharacterDesigner(data);
        }
Пример #4
0
        public void CreatingADescriptionCombinesDescriptorsAndName()
        {
            var data = new MemoryStore();

            data.SetValue("name", "ponytail");
            var descriptors = new MemoryStore();

            descriptors.AddListItem(new MemoryStore("length", new string[] { "long" }));
            descriptors.AddListItem(new MemoryStore("texture", new string[] { "braided" }));
            data.SetValue("descriptors", descriptors);
            var subject = new TestDescription(data);
            var text    = subject.CreateDescription();

            Assert.Equal(text, "long braided ponytail");
        }
Пример #5
0
        public void CharacterDesignerWillExecuteStepsUntilCharacterIsAtStrategyLevelIfTypeIsLevelUp()
        {
            var data = new MemoryStore();

            data.SetValue("name", "Test One");
            data.SetValue("type", "levelup");
            var steps = new MemoryStore();

            steps.AddListItem(new MemoryStore("step", "Tests.Actions.CharacterGeneration.DummyStepLevelUp"));
            data.SetValue("steps", steps);

            var build = new CharacterStrategy();

            build.TargetLevel = 5;
            var character = new CharacterSheet(build);

            character.SetClass(Class.CreateForTesting());

            var designer = new CharacterDesigner(data);

            designer.ExecuteStep(character);
            Assert.Equal(designer.DesignerType, CharacterDesigner.Type.LevelUp);
            Assert.Equal(character.Level, 5);
            Assert.Equal(character.Age, 4);
        }
Пример #6
0
        public void DescriptionDetailCanHaveSupportingAdjectivesToChooseFrom()
        {
            var data = new MemoryStore();

            data.SetValue("name", "ponytail");
            var descriptors = new MemoryStore();

            descriptors.AddListItem(new MemoryStore("length", new string[] { "long", "short", "waist-length" }));
            descriptors.AddListItem(new MemoryStore("texture", new string[] { "messy", "tidy", "wavy", "straight", "high", "braided" }));
            data.SetValue("descriptors", descriptors);

            var subject = new TestDescription(data);

            Assert.Equal(subject.Name, "ponytail");
            Assert.Single(subject.Descriptors.Values.ElementAt(0), "long");
            Assert.Single(subject.Descriptors.Values.ElementAt(1), "wavy");
        }
Пример #7
0
        public void SupportsNamedDescriptors()
        {
            var data = new MemoryStore();

            data.SetValue("name", "ponytail");
            var descriptors = new MemoryStore();

            descriptors.AddListItem(new MemoryStore("color", "red, green, blue"));
            data.SetValue("descriptors", descriptors);
            var subject = new TestDescription(data);

            Assert.Single(subject.Descriptors.Keys, "color");
        }
Пример #8
0
        public void PassInConfigurationDataToStepIfAppropriate()
        {
            var data = new MemoryStore();

            data.SetValue("name", "Test One");
            var configureStep = new MemoryStore();

            configureStep.SetValue("step", "Tests.Actions.CharacterGeneration.DummyStepWithConfiguration");
            configureStep.SetValue("other-option", "fourteen");

            var steps = new MemoryStore();

            steps.AddListItem(configureStep);
            data.SetValue("steps", steps);

            var designer  = new CharacterDesigner(data);
            var character = CharacterTestTemplates.AverageBob();

            designer.ExecuteStep(character);
            Assert.Equal(configureStep, character.Get <IObjectStore>());
            Assert.Equal("fourteen", configureStep.GetString("other-option"));
        }
Пример #9
0
        public void LoadFromObjectStore()
        {
            var data = new MemoryStore();

            data.SetValue("name", "Bat");
            var modifiers = new MemoryStore();
            var statMod   = new MemoryStore();

            statMod.SetValue("stat", "Perception");
            statMod.SetValue("type", "bonus");
            statMod.SetValue("modifier", 2);
            statMod.SetValue("condition", "darkness");
            modifiers.AddListItem(statMod);
            data.SetValue("modifiers", modifiers);

            var familiar = new Familiar(data);

            Assert.Equal("Bat", familiar.Name);
            Assert.Equal(1, familiar.Modifiers.Count);
            Assert.Equal("Perception", familiar.Modifiers[0].StatisticName);
            Assert.Equal("bonus", familiar.Modifiers[0].ModifierType);
            Assert.Equal(2, familiar.Modifiers[0].Modifier);
        }
Пример #10
0
        public void UsesDescriptorsIfAvailable()
        {
            var descs = new MemoryStore();

            descs.AddListItem(new MemoryStore("descriptor", new string[] { "dragon" }));
            var mem = new MemoryStore();

            mem.SetValue("name", "tattoo");
            mem.SetValue("descriptors", descs);
            var phys = new PhysicalFeature(mem);

            var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys);

            var subject = new CreatePhysicalFeatures(gateway);

            var character = new CharacterSheet(CharacterStrategy.Default());

            character.Gender = Gender.Female;

            subject.ExecuteStep(character);

            Assert.Equal(character.Appearance.PhysicalAppearance, "She has a dragon tattoo.");
        }