Пример #1
0
 /// <summary>
 /// Loads provided data file
 /// </summary>
 /// <param name="filename"></param>
 private void _LoadXmb(string filename)
 {
     _Data = new Xmb {
         Name = filename
     };
     _Data.Read();
 }
Пример #2
0
        public void PackageDeserialization()
        {
            XDocument doc;

            using (var stream = File.OpenRead("ocean.exml"))
            {
                doc = new Xmb(new BinaryReader(stream)).Document;
            }

            var pkg = PackageService.Open(doc.Root);

            Assert.Equal("ocean", pkg.Name);

            Assert.NotNull(pkg.Objects);
            Assert.True(pkg.Objects.Count() == 6);

            Assert.IsType <SQEX.Ebony.Object>(pkg.Objects.First());
            if (pkg.Objects.First() is SQEX.Ebony.Object obj)
            {
                Assert.Equal(0, obj.ObjectIndex);
                Assert.Equal("ocean", obj.Name);
                Assert.Equal("SQEX.Ebony.Framework.Entity.EntityPackageReference", obj.Type);
                Assert.Equal("", obj.Path);
                Assert.True(obj.Checked);

                Assert.NotNull(obj.Item);
                Assert.IsType <SQEX.Ebony.Framework.Entity.EntityPackageReference>(obj.Item);
                if (obj.Item is SQEX.Ebony.Framework.Entity.EntityPackageReference entityPackage)
                {
                    Assert.Equal("environment/world/ebex/ocean.ebex", entityPackage.SourcePath);
                    Assert.Equal(0.0f, entityPackage.Position.x);
                    Assert.Equal(1.0f, entityPackage.Position.w);

                    Assert.Equal(5, entityPackage.Entities.Count);
                }
            }

            Assert.IsType <SQEX.Ebony.Object>(pkg.Objects.Skip(1).First());
            if (pkg.Objects.Skip(1).First() is SQEX.Ebony.Object obj2)
            {
                Assert.Equal(1, obj2.ObjectIndex);
                Assert.Equal("sea00", obj2.Name);
                Assert.Equal("entities_", obj2.OwnerPath);
                Assert.Equal("entities_.sea00", obj2.Path);
                Assert.Equal("Black.Entity.StaticModelEntity", obj2.Type);

                Assert.NotNull(obj2.Item);
                Assert.IsType <Black.Entity.StaticModelEntity>(obj2.Item);
                if (obj2.Item is Black.Entity.StaticModelEntity staticModelEntity)
                {
                    Assert.Equal(-2416.375, staticModelEntity.Position.x, 3);
                    Assert.Equal(0, staticModelEntity.Position.y, 3);
                    Assert.Equal(-3046.105, staticModelEntity.Position.z, 3);
                    Assert.Equal(1, staticModelEntity.Position.w, 3);
                    Assert.Equal("environment/world/props/pond_water01/models/pond_water01_A.gmdl", staticModelEntity.SourcePath);
                    Assert.True(staticModelEntity.Visible);
                }
            }
        }
Пример #3
0
        public async Task SongInfoWriteTest(string binName, string xmlName)
        {
            using FileStream outStream = new FileStream(binName, FileMode.Create, FileAccess.Write);
            Xmb xmb = new Xmb();

            using FileStream stream = new FileStream(xmlName, FileMode.Open, FileAccess.Read);
            xmb.ReadXml(stream);
            await xmb.WriteXmb(outStream);
        }
Пример #4
0
        public void SongInfoReadTest(string binName, string xmlName)
        {
            using FileStream outStream = new FileStream(xmlName, FileMode.Create, FileAccess.Write);
            Xmb xmb = new Xmb();

            using FileStream stream = new FileStream(binName, FileMode.Open, FileAccess.Read);
            xmb.ReadXmb(stream);
            xmb.WriteXml(outStream);
        }
Пример #5
0
 private void Compare(Xmb expected, Xmb actual)
 {
     AssertEqual(expected.Elements, actual.Elements, AssertEqual);
     AssertEqual(expected.Attributes, actual.Attributes, AssertEqual);
     AssertEqual(expected.Variants, actual.Variants, AssertEqual);
     AssertEqual(expected.ElementIndexTable, actual.ElementIndexTable, AssertEqual);
     AssertEqual(expected.AttributeIndexTable, actual.AttributeIndexTable, AssertEqual);
     AssertEqual(expected.StringData, actual.StringData, AssertEqual);
 }
Пример #6
0
        public void XmbPerformanceTest(string fileName)
        {
            Xmb xmbOrigin;

            using (var stream = File.OpenRead(fileName))
            {
                xmbOrigin = new Xmb(new BinaryReader(stream));
            }

            Compare(xmbOrigin, new Xmb(xmbOrigin.Document));
        }
Пример #7
0
        public void XmbEqualityTest(string fileName)
        {
            XDocument doc;

            using (var stream = File.OpenRead(fileName))
            {
                doc = new Xmb(new BinaryReader(stream)).Document;
            }

            Compare(doc.Root, new Xmb(doc).Document.Root);
        }
Пример #8
0
        private void LoadXmb(string fileName)
        {
            Xmb xmb;

            using (var stream = File.Open(fileName, FileMode.Open))
            {
                xmb = new Xmb(new BinaryReader(stream));
            }

            Open(xmb);
        }
Пример #9
0
        public void PackageCheckTypesOnDeserialization(string fileName)
        {
            XDocument doc;

            using (var stream = File.OpenRead(fileName))
            {
                doc = new Xmb(new BinaryReader(stream)).Document;
            }

            var pkg = PackageService.Open(doc.Root);
        }
Пример #10
0
        private void Export(string input, string output)
        {
            if (IsVerbose)
            {
                Console.WriteLine(input);
            }

            XDocument doc;

            using (var stream = File.OpenRead(input))
            {
                doc = new Xmb(new BinaryReader(stream)).Document;
            }

            using (var stream = File.Create(output))
            {
                doc.Save(stream);
            }
        }
Пример #11
0
        public void XmbOptimizationTest()
        {
            XDocument document;

            using (var stream = File.OpenRead("xmb/performance-test1.xml"))
            {
                document = XDocument.Load(stream);
            }

            var xmb = new Xmb(document);

            Assert.Equal(2, xmb.Elements.Count());
            Assert.Equal(2, xmb.Attributes.Count());
            Assert.Equal(3, xmb.Variants.Count());
            Assert.Equal(2, xmb.ElementIndexTable.Count());
            Assert.Equal(2, xmb.AttributeIndexTable.Count());

            At(xmb.ElementIndexTable, 0, x => Assert.Equal(0, x));
            At(xmb.ElementIndexTable, 1, x => Assert.Equal(0, x));
            At(xmb.AttributeIndexTable, 0, x => Assert.Equal(0, x));
            At(xmb.AttributeIndexTable, 1, x => Assert.Equal(1, x));

            At(xmb.Elements, 0, e =>
            {
                Assert.Equal("entry", e.Name);
                Assert.Equal(0, e.ElementTableIndex);
                Assert.Equal(0, e.ElementCount);
                Assert.Equal(1, e.AttributeTableIndex);
                Assert.Equal(1, e.AttributeCount);
            });

            At(xmb.Elements, 1, e =>
            {
                Assert.Equal("not-a-package", e.Name);
                Assert.Equal(0, e.ElementTableIndex);
                Assert.Equal(2, e.ElementCount);
                Assert.Equal(0, e.AttributeTableIndex);
                Assert.Equal(1, e.AttributeCount);
            });
        }
Пример #12
0
        public async Task AddLyrics(string dirName, IProgress <ProgressData> progress = null)
        {
            DirectoryInfo    dInfo     = new DirectoryInfo(dirName);
            HashSet <string> filenames =
                new HashSet <string>(dInfo.GetFiles("*.xml")
                                     .Select(fInfo => fInfo.Name));

            string               filenameXlsxName = dirName + "/filenames.xlsx";
            XlsxReader           xlsx             = new XlsxReader(filenameXlsxName);
            IEnumerable <Record> records          = xlsx.GetRows("XX", "filenames")
                                                    .Where(record => filenames.Contains((string)record[1]));
            int total = records.Count();
            int count = 0;

            foreach (Record record in records)
            {
                string entryName = (string)record[0];
                string xmlName   = dInfo.FullName + '\\' + (string)record[1];
                count++;
                progress?.Report(new ProgressData {
                    count = count, total = total, filename = entryName
                });
                if (!HasFile(entryName))
                {
                    Xmb xmb = new Xmb();
                    using (FileStream xmlStream = new FileStream(xmlName, FileMode.Open, FileAccess.Read))
                    {
                        xmb.ReadXml(xmlStream);
                    }
                    ZipArchiveEntry entry = zipArchive.CreateEntry(entryName);
                    using Stream entryStream = entry.Open();
                    await xmb.WriteXmb(entryStream);

                    _entries.Add(new PatchZipEntry(entry));
                }
            }
        }
Пример #13
0
 public void GuessTypeFromValueTest(string value, Xmb.ValueType expected)
 {
     Assert.Equal(expected, Xmb.GuessTypeFromValue(value));
 }
Пример #14
0
        public void XmbAcceptanceTest()
        {
            XDocument document;

            using (var stream = File.OpenRead("xmb/acceptance-test.xml"))
            {
                document = XDocument.Load(stream);
            }

            var xmb = new Xmb(document);

            At(xmb.Elements, xmb.RootElementIndex, e1 =>
            {
                Assert.Equal("not-a-package", e1.Name);
                Assert.Equal(1, e1.ElementCount);
                Assert.Equal(1, e1.AttributeCount);

                At(xmb.Variants, e1.VariantOffset, variant =>
                {
                    Assert.Equal(string.Empty, variant.Name);
                });

                At(xmb.Attributes, xmb.AttributeIndexTable, e1.AttributeTableIndex, attribute =>
                {
                    Assert.Equal("name", attribute.Name);
                    At(xmb.Variants, attribute.VariantOffset, variant =>
                    {
                        Assert.Equal("test", variant.Name);
                    });
                });

                At(xmb.Elements, xmb.ElementIndexTable, e1.ElementTableIndex, e2 =>
                {
                    Assert.Equal("items", e2.Name);
                    Assert.Equal(2, e2.ElementCount);
                    Assert.Equal(0, e2.AttributeCount);

                    At(xmb.Variants, e2.VariantOffset, variant =>
                    {
                        Assert.Equal(string.Empty, variant.Name);
                    });

                    At(xmb.Elements, xmb.ElementIndexTable, e2.ElementTableIndex, e3 =>
                    {
                        Assert.Equal("item", e3.Name);
                        Assert.Equal(0, e3.ElementCount);
                        Assert.Equal(1, e3.AttributeCount);

                        At(xmb.Variants, e3.VariantOffset, variant =>
                        {
                            Assert.Equal(string.Empty, variant.Name);
                        });

                        At(xmb.Attributes, xmb.AttributeIndexTable, e3.AttributeTableIndex, attribute =>
                        {
                            Assert.Equal("name", attribute.Name);
                            At(xmb.Variants, attribute.VariantOffset, variant =>
                            {
                                Assert.Equal("item1", variant.Name);
                            });
                        });
                    });

                    At(xmb.Elements, xmb.ElementIndexTable, e2.ElementTableIndex + 1, e3 =>
                    {
                        Assert.Equal("item", e3.Name);
                        Assert.Equal(0, e3.ElementCount);
                        Assert.Equal(2, e3.AttributeCount);

                        At(xmb.Variants, e3.VariantOffset, variant =>
                        {
                            Assert.Equal("Value", variant.Name);
                        });

                        At(xmb.Attributes, xmb.AttributeIndexTable, e3.AttributeTableIndex, attribute =>
                        {
                            Assert.Equal("name", attribute.Name);
                            At(xmb.Variants, attribute.VariantOffset, variant =>
                            {
                                Assert.Equal("item2", variant.Name);
                            });
                        });

                        At(xmb.Attributes, xmb.AttributeIndexTable, e3.AttributeTableIndex + 1, attribute =>
                        {
                            Assert.Equal("id", attribute.Name);
                            At(xmb.Variants, attribute.VariantOffset, variant =>
                            {
                                Assert.Equal("1", variant.Name);
                            });
                        });
                    });
                });
            });
        }
Пример #15
0
 public void Open(Xmb xmb)
 {
     Open(xmb.Document);
 }