Exemplo n.º 1
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.");
        }
Exemplo n.º 2
0
        public void HasADefaultTemplate()
        {
            var store = new MemoryStore();

            store.SetValue("name", "tattoo");
            var feature = new PhysicalFeature(store);

            Assert.Equal("{{pronoun}} has a {{description}}.", feature.Templates[0].Template);
        }
Exemplo n.º 3
0
        public void IfNoTemplateOrLocationJustDoesASimpleFormat()
        {
            var mem = new MemoryStore();

            mem.SetValue("name", "crooked nose");
            var phys    = new PhysicalFeature(mem);
            var gateway = EntityGateway <PhysicalFeature> .LoadWithSingleItem(phys);

            var subject   = new CreatePhysicalFeatures(gateway);
            var character = new CharacterSheet(CharacterStrategy.Default());

            subject.ExecuteStep(character);

            Assert.Equal(character.Appearance.PhysicalAppearance, "He has a crooked nose.");
        }
            private static List <FeatureSetComparison> CompareFeatureSets(PhysicalFeatureSet set1, PhysicalFeatureSet set2)
            {
                var results = new List <FeatureSetComparison>();

                var set1Enumerator = set1.PhysicalFeatures.GetEnumerator();
                var set2Enumerator = set2.PhysicalFeatures.GetEnumerator();

                while (set1Enumerator.MoveNext() && set2Enumerator.MoveNext())
                {
                    PhysicalFeature set1value = set1Enumerator.Current;
                    PhysicalFeature set2value = set2Enumerator.Current;

                    results.Add(new FeatureSetComparison(set1value, set2value));
                }

                return(results);
            }
Exemplo n.º 5
0
        public void CombineMultipleDescriptionsTogetherButDoNotRepeat()
        {
            var tattoo = new PhysicalFeature();

            tattoo.AddDescriptor("color", new string[] { "green" });
            tattoo.AddTemplate("Tattoo of a {{descriptor \"color\"}} dragon.");
            var scar = new PhysicalFeature();

            scar.AddDescriptor("location", new string[] { "face" });
            scar.AddTemplate("A scar on {{descriptor \"location\"}}.");

            var gateway = EntityGateway <PhysicalFeature> .LoadFromList(new PhysicalFeature[] { tattoo, scar });

            var subject = new CreatePhysicalFeatures(gateway);

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

            subject.ExecuteStep(character);
            Assert.Contains("Tattoo of a green dragon.", character.Appearance.PhysicalAppearance);
            Assert.Contains("A scar on face.", character.Appearance.PhysicalAppearance);
        }
Exemplo n.º 6
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.");
        }
 public FeatureSetComparison(PhysicalFeature feature1, PhysicalFeature feature2)
 {
     _feature1 = feature1;
     _feature2 = feature2;
 }