From b8aca69978ca609ec21e09c11b069aa8d7d9b251 Mon Sep 17 00:00:00 2001 From: morkt Date: Fri, 31 Aug 2018 19:14:10 +0400 Subject: [PATCH] (Gx4Lib): differentiate audio/image packages. --- Net20/Gx4Lib/PackageFile.cs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Net20/Gx4Lib/PackageFile.cs b/Net20/Gx4Lib/PackageFile.cs index 7ef443f1..d141d7da 100644 --- a/Net20/Gx4Lib/PackageFile.cs +++ b/Net20/Gx4Lib/PackageFile.cs @@ -32,13 +32,10 @@ namespace GameRes.Gx4Lib { public class PackageFile { - public PFHeader[] Deserialize (Stream input) + public PFHeaders Deserialize (Stream input) { var bin = new BinaryFormatter { Binder = new Gx4TypeBinder() }; - var index = bin.Deserialize (input) as PFHeaders; - if (null == index) - return null; - return index.headers; + return bin.Deserialize (input) as PFHeaders; } } @@ -56,6 +53,16 @@ namespace GameRes.Gx4Lib public PFHeader[] headers; } + [Serializable] + public class PFAudioHeaders : PFHeaders + { + } + + [Serializable] + public class PFImageHeaders : PFHeaders + { + } + internal class Gx4TypeBinder : SerializationBinder { public override Type BindToType (string assemblyName, string typeName) @@ -64,6 +71,10 @@ namespace GameRes.Gx4Lib { if (typeName.StartsWith ("GX4.PackageFile`1+PFHeaders[[")) { + if (0 == string.Compare (typeName, 29, "UnityEngine.AudioClip", 0, 21)) + return typeof(PFAudioHeaders); + if (0 == string.Compare (typeName, 29, "UnityEngine.Texture2D", 0, 21)) + return typeof(PFImageHeaders); return typeof(PFHeaders); } else if (typeName.StartsWith ("GX4.PackageFile`1+PFHeader[["))