Beispiel #1
0
        public void ProcessMultipleTest()
        {
            var patcher = new PatcherProcessor();
            var patch   = new Metadata
            {
                Assets = new List <AssetFile>
                {
                    new AssetFile
                    {
                        Name   = "somedir/somefile.bar",
                        Method = "binarc",
                        Multi  = new List <Multi>
                        {
                            new Multi {
                                Name = "somedir/another.bar"
                            }
                        },
                        Source = new List <AssetFile>
                        {
                            new AssetFile
                            {
                                Name   = "test",
                                Method = "imgd",
                                Type   = "imgd",
                                Source = new List <AssetFile>
                                {
                                    new AssetFile
                                    {
                                        Name       = "sample.png",
                                        IsSwizzled = false
                                    }
                                }
                            }
                        }
                    }
                }
            };

            File.Copy("Imaging/res/png/32.png", Path.Combine(ModInputDir, "sample.png"));

            patcher.Patch(AssetsInputDir, ModOutputDir, patch, ModInputDir);

            AssertFileExists(ModOutputDir, patch.Assets[0].Name);
            AssertBarFile("test", entry =>
            {
                Assert.True(Imgd.IsValid(entry.Stream));
            }, ModOutputDir, patch.Assets[0].Name);

            AssertFileExists(ModOutputDir, patch.Assets[0].Multi[0].Name);
            AssertBarFile("test", entry =>
            {
                Assert.True(Imgd.IsValid(entry.Stream));
            }, ModOutputDir, patch.Assets[0].Multi[0].Name);
        }
Beispiel #2
0
 public void IsValidTest()
 {
     using (var stream = new MemoryStream())
     {
         stream.WriteByte(0x49);
         stream.WriteByte(0x4d);
         stream.WriteByte(0x47);
         stream.WriteByte(0x44);
         stream.Position = 0;
         Assert.True(Imgd.IsValid(stream));
     }
 }
Beispiel #3
0
        private static Imgd CreateImageImd(Context context, AssetFile source)
        {
            var srcFile = context.GetSourceModAssetPath(source.Name);

            using var srcStream = File.OpenRead(srcFile);
            if (PngImage.IsValid(srcStream))
            {
                var png = PngImage.Read(srcStream);
                return(Imgd.Create(png.Size, png.PixelFormat, png.GetData(), png.GetClut(), source.IsSwizzled));
            }
            else if (Imgd.IsValid(srcStream))
            {
                return(Imgd.Read(srcStream));
            }

            throw new Exception($"Image source '{source.Name}' not recognized");
        }