示例#1
0
        public void ValidateEmptyTextureFileMetadata()
        {
            var f    = new TextureSetFile();
            var root = TextureSetFileWriter.GenerateRoot(f);
            var md   = root.Element(Namespace + "metadata");

            md.HasAttributes.Should().Be(false);
            md.HasElements.Should().Be(false);
        }
示例#2
0
        public void ValidateTextureTile()
        {
            var tt   = new TextureTile();
            var root = TextureSetFileWriter.GenerateTile(tt);

            root.Name.Should().Be(Namespace + "tile");
            root.Should().HaveAttribute("x", "0");
            root.Should().HaveAttribute("y", "0");
        }
示例#3
0
        public void ValidateEmptyTextureCollectionMetaData()
        {
            var tc   = new TileTextureCollection();
            var root = TextureSetFileWriter.GenerateCollection(tc);

            root.Name.Should().Be(Namespace + "collection");
            root.Should().HaveAttribute("id", "");
            root.Element(Namespace + "metadata").Should().BeNull();
        }
示例#4
0
        public void SavingEmptyTextureFileMustNotCrash()
        {
            var f    = new TextureSetFile();
            var root = TextureSetFileWriter.GenerateRoot(f);

            root.Name.Should().Be(Namespace + "tileset");
            root.Should().HaveAttribute("width", "0");
            root.Should().HaveAttribute("height", "0");
            root.Should().HaveAttribute("type", "Grid");
            root.Should().HaveElement(Namespace + "metadata");
        }
示例#5
0
        public void ValidateEmptyTextureGridMetaData()
        {
            var tc   = new TextureGrid();
            var root = TextureSetFileWriter.GenerateGrid(tc);

            root.Name.Should().Be(Namespace + "grid");
            root.Should().HaveAttribute("name", "");
            root.Should().HaveAttribute("x", "0");
            root.Should().HaveAttribute("y", "0");
            root.Attribute("cell-width").Should().BeNull();
            root.Attribute("cell-height").Should().BeNull();
            root.Should().HaveElement(Namespace + "metadata");
        }
示例#6
0
        public void ValidateTextureGridOptionals()
        {
            var tc = new TextureGrid
            {
                AnchorX = 1,
                AnchorY = 2,
                Width   = 3,
                Height  = 4
            };
            var root = TextureSetFileWriter.GenerateGrid(tc);

            root.Should().HaveAttribute("anchor-x", "1");
            root.Should().HaveAttribute("anchor-y", "2");
            root.Element(Namespace + "metadata").Should().HaveAttribute("grid-width", "3");
            root.Element(Namespace + "metadata").Should().HaveAttribute("grid-height", "4");
        }
示例#7
0
        public void ValidateTextureTileMultipleTags()
        {
            var tt = new TextureTile();

            tt.Tags.Add("tag1");
            tt.Tags.Add("tag2");
            var root = TextureSetFileWriter.GenerateTile(tt);

            root.Name.Should().Be(Namespace + "tile");
            root.Attribute("tag").Should().BeNull();
            root.Should().HaveAttribute("x", "0");
            root.Should().HaveAttribute("y", "0");

            var l = root.Elements(Namespace + "tag").ToList();

            l.Count.Should().Be(2);
            l[0].Should().HaveValue("tag1");
            l[1].Should().HaveValue("tag2");
        }
示例#8
0
        public void ValidateTextureFileProperties()
        {
            var f = new TextureSetFile
            {
                Properties = new ReadOnlyDictionary <string, string>(new Dictionary <string, string>
                {
                    { "pname1", "pvalue1" },
                    { "pname2", "pvalue2" }
                })
            };
            var root = TextureSetFileWriter.GenerateRoot(f);
            var md   = root.Element(Namespace + "metadata");

            md.HasAttributes.Should().Be(false);

            var elements = md.Elements(Namespace + "property").ToList();

            elements.Should().HaveCount(2);
            elements[0].Should().HaveAttribute("name", "pname1").And.HaveValue("pvalue1");
            elements[1].Should().HaveAttribute("name", "pname2").And.HaveValue("pvalue2");
        }
示例#9
0
        public async Task SaveFile(string fileName)
        {
            var textureSet = SelectedItem switch
            {
                TextureSetFile s => s,
                TileTextureCollection c => c.Parent,
                TextureGrid g => g.Parent?.Parent,
                TextureTile t => t.Parent?.Parent?.Parent,
                _ => null
            };

            if (textureSet == null)
            {
                return;
            }

            GeneratorPreferencesWriter.EnsureParentDirectoryExists(fileName);
            var doc = TextureSetFileWriter.GenerateXml(textureSet);

            await using var stream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true);
            await doc.SaveAsync(stream, default, default);