private NecroDancerData ReadNecroDancerData(XElement necrodancerEl)
        {
            var necroDancerData = new NecroDancerData();

            foreach (var necrodancerElChild in necrodancerEl.Elements())
            {
                var necrodancerElChildName = necrodancerElChild.Name.ToString();
                switch (necrodancerElChildName)
                {
                case "items":
                    var items = ReadItems(necrodancerElChild);
                    necroDancerData.Items.AddRange(items);
                    break;

                case "enemies":
                    var enemies = ReadEnemies(necrodancerElChild);
                    necroDancerData.Enemies.AddRange(enemies);
                    break;

                case "characters":
                    var characters = ReadCharacters(necrodancerElChild, necroDancerData.Items);
                    necroDancerData.Characters.AddRange(characters);
                    break;

                case "modes":
                    var modes = ReadModes(necrodancerElChild);
                    necroDancerData.Modes.AddRange(modes);
                    break;

                default: log.Debug($"Unknown necrodancer element: '{necrodancerElChildName}'."); break;
                }
            }

            return(necroDancerData);
        }
Exemplo n.º 2
0
            public void ReturnsNecroDancerData()
            {
                // Arrange -> Act
                var necroDancerData = new NecroDancerData();

                // Assert
                Assert.IsAssignableFrom <NecroDancerData>(necroDancerData);
            }
Exemplo n.º 3
0
            public void GetsModes()
            {
                // Arrange
                var necroDancerData = new NecroDancerData();

                // Act
                var modes = necroDancerData.Modes;

                // Assert
                Assert.IsAssignableFrom <List <IMode> >(modes);
            }
Exemplo n.º 4
0
            public void GetsCharacters()
            {
                // Arrange
                var necroDancerData = new NecroDancerData();

                // Act
                var characters = necroDancerData.Characters;

                // Assert
                Assert.IsAssignableFrom <List <Character> >(characters);
            }
Exemplo n.º 5
0
            public void GetsEnemies()
            {
                // Arrange
                var necroDancerData = new NecroDancerData();

                // Act
                var enemies = necroDancerData.Enemies;

                // Assert
                Assert.IsAssignableFrom <List <Enemy> >(enemies);
            }
Exemplo n.º 6
0
            public void GetsItems()
            {
                // Arrange
                var necroDancerData = new NecroDancerData();

                // Act
                var items = necroDancerData.Items;

                // Assert
                Assert.IsAssignableFrom <List <Item> >(items);
            }
            public void NecroDancerDataIsNull_ThrowsArgumentNullException()
            {
                // Arrange
                var             serializer      = new NecroDancerDataSerializer();
                var             stream          = Stream.Null;
                NecroDancerData necroDancerData = null;

                // Act -> Assert
                Assert.Throws <ArgumentNullException>(() =>
                {
                    serializer.Serialize(stream, necroDancerData);
                });
            }
            public void NecroDancerDataIsNull_ThrowsArgumentNullException()
            {
                // Arrange
                var             stream          = Stream.Null;
                var             writer          = new NecroDancerDataWriter(stream);
                NecroDancerData necroDancerData = null;

                // Act -> Assert
                Assert.Throws <ArgumentNullException>(() =>
                {
                    writer.Write(necroDancerData);
                });
            }
        public void Write(NecroDancerData necroDancerData)
        {
            if (necroDancerData == null)
            {
                throw new ArgumentNullException(nameof(necroDancerData));
            }

            var doc = new XDocument();

            var necrodancerEl = new XElement("necrodancer");

            var itemsEl = WriteItems(necroDancerData.Items);

            necrodancerEl.Add(itemsEl);

            var enemiesEl = WriteEnemies(necroDancerData.Enemies);

            necrodancerEl.Add(enemiesEl);

            if (necroDancerData.Characters.Any())
            {
                var charactersEl = WriteCharacters(necroDancerData.Characters);
                necrodancerEl.Add(charactersEl);
            }

            if (necroDancerData.Modes.Any())
            {
                var modesEl = WriteModes(necroDancerData.Modes);
                necrodancerEl.Add(modesEl);
            }

            doc.Add(necrodancerEl);

            var settings = new XmlWriterSettings
            {
                IndentChars        = "  ",
                Indent             = true,
                OmitXmlDeclaration = true,
            };

            using (var xw = XmlWriter.Create(stream, settings))
            {
                doc.Save(xw);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="necroDancerData"></param>
        public void Serialize(Stream stream, NecroDancerData necroDancerData)
        {
            var writer = new NecroDancerDataWriter(stream);

            writer.Write(necroDancerData);
        }