コード例 #1
0
        public void CanRT_Compendium()
        {
            //var creator = new BeingCreator(__factory);
            var publisher      = new BookPublisher(_creator);
            var tomeOfChaos    = publisher.Tome_FromNew("gloop");
            var herbal         = new Herbal();
            var socialRegister = new SocialRegister(_creator);
            var dramaticon     = new Dramaticon();
            var atlas          = new Atlas();

            var idGen      = new IDGenerator(33);
            var compendium = new Compendium(idGen, _creator, tomeOfChaos, herbal, socialRegister, dramaticon, atlas);

            var yaml = _serializer.Serialize(compendium);

            Assert.That(yaml, Is.Not.Null);

            var newBook = _deserializer.Deserialize <IBook>(yaml);

            Assert.That(newBook, Is.TypeOf <Compendium>());
            var newCompendium = (Compendium)newBook;

            Assert.That(newCompendium.IDGenerator.UseID(), Is.EqualTo(33));
            Assert.That(newCompendium.TomeOfChaos.TopSeed, Is.EqualTo("gloop"));

            //TODO: slightly more muscular checks once these books go beyond placeholders
            Assert.That(newCompendium.Herbal, Is.Not.Null);
            Assert.That(newCompendium.SocialRegister, Is.Not.Null);
            Assert.That(newCompendium.Dramaticon, Is.Not.Null);
            Assert.That(newCompendium.Atlas, Is.Not.Null);
        }
コード例 #2
0
ファイル: Describer.cs プロジェクト: Coleoid/CopperBend
        private void ScrambleSeeds(TomeOfChaos tome, Herbal herbal)
        {
            var shuffled = SeedAdjectives
                           .OrderBy(d => tome.LearnableRndNext()).ToList();

            foreach (var key in herbal.PlantByID.Keys)
            {
                herbal.PlantByID[key].SeedAdjective = shuffled[0];
                shuffled.RemoveAt(0);
            }
        }
コード例 #3
0
        public Herbal Herbal_FromYaml(IParser parser)
        {
            parser.Consume <MappingStart>();
            Herbal herbal = new Herbal();

            while (parser.TryConsume <Scalar>(out var evt) && evt.Value == "Plant")
            {
                herbal.AddPlant(ParsePlantDetails(parser));
            }

            parser.Consume <MappingEnd>();
            return(herbal);
        }
コード例 #4
0
        public void CanRT_Herbal()
        {
            //if (!Debugger.IsAttached) Debugger.Launch();

            var herbal = new Herbal();
            var thorny = new PlantDetails
            {
                ID             = 77,
                MainName       = "Thornfriend",
                FruitAdjective = "Luminous",
                FruitKnown     = true,
                SeedAdjective  = "Knobbly",
                SeedKnown      = true,
                GrowthTime     = 234,
            };

            var boomy = new PlantDetails
            {
                ID             = 88,
                MainName       = "Boomer",
                FruitAdjective = "Singed",
                FruitKnown     = false,
                SeedAdjective  = "Dark",
                SeedKnown      = false,
                GrowthTime     = 432,
            };

            herbal.AddPlant(thorny);
            herbal.AddPlant(boomy);

            var yaml = _serializer.Serialize(herbal);

            Assert.That(yaml, Is.Not.Null);

            var newBook = _deserializer.Deserialize <IBook>(yaml);

            Assert.That(newBook, Is.TypeOf <Herbal>());
            var newHerbal = (Herbal)newBook;

            var newDetail = newHerbal.PlantByID[77];

            Assert.That(newDetail.MainName, Is.EqualTo("Thornfriend"));
        }
コード例 #5
0
        public Herbal Herbal_FromNew()
        {
            Herbal herbal = new Herbal();

            herbal.PlantByID   = new Dictionary <uint, PlantDetails>();
            herbal.PlantByName = new Dictionary <string, PlantDetails>();

            PlantDetails plant;

            //0.1.WORLD  Flesh out the plant list, and tuck it into YAML config.
            plant = new PlantDetails
            {
                ID         = 1,
                MainName   = "Boomer",
                GrowthTime = 400,
            };
            herbal.PlantByID[plant.ID]         = plant;
            herbal.PlantByName[plant.MainName] = plant;

            plant = new PlantDetails
            {
                ID         = 2,
                MainName   = "Healer",
                GrowthTime = 400,
            };
            herbal.PlantByID[plant.ID]         = plant;
            herbal.PlantByName[plant.MainName] = plant;

            plant = new PlantDetails
            {
                ID         = 3,
                MainName   = "Thornfriend",
                GrowthTime = 400,
            };
            herbal.PlantByID[plant.ID]         = plant;
            herbal.PlantByName[plant.MainName] = plant;

            return(herbal);
        }
コード例 #6
0
        public IBook Compendium_FromYaml(IParser parser)
        {
            parser.Consume <MappingStart>();

            uint        nextID = uint.Parse(parser.GetKVP_string("NextID"));
            IDGenerator idGen  = new IDGenerator(nextID);

            TomeOfChaos    tome     = null;
            Herbal         herbal   = null;
            SocialRegister register = null;
            Dramaticon     drama    = null;
            Atlas          atlas    = null;

            while (parser.TryConsume <Scalar>(out var next))
            {
                switch (next.Value)
                {
                case "TomeOfChaos": tome = Tome_FromYaml(parser); break;

                case "Herbal": herbal = Herbal_FromYaml(parser); break;

                case "SocialRegister": register = Register_FromYaml(parser, BeingCreator); break;

                case "Dramaticon": drama = Dramaticon_FromYaml(parser); break;

                case "Atlas": atlas = Atlas_FromYaml(parser); break;

                default:
                    throw new NotImplementedException($"Cannot yet parse a [{next.Value}] for Compendium.");
                }
            }

            var compendium = new Compendium(idGen, BeingCreator, tome, herbal, register, drama, atlas);

            parser.Consume <MappingEnd>();
            return(compendium);
        }
コード例 #7
0
ファイル: Describer.cs プロジェクト: Coleoid/CopperBend
 public void Scramble(TomeOfChaos tome, Herbal herbal)
 {
     ScrambleSeeds(tome, herbal);
     ScrambleFruit(tome, herbal);
 }