コード例 #1
0
        public byte[] ExportBundleDataByPath(string path)
        {
            TOCBundleInfoStruct info = new TOCBundleInfoStruct();

            info.isbase = true;
            foreach (TOCBundleInfoStruct inf in bundles)
            {
                if (inf.id.ToLower() == path.ToLower())
                {
                    info = inf;
                    break;
                }
            }
            if (info.isbase)
            {
                return(new byte[0]);
            }
            string     sbpath = Helpers.GetFileNameWithOutExtension(MyPath) + ".sb";
            FileStream fs     = new FileStream(sbpath, FileMode.Open, FileAccess.Read);

            fs.Seek(0, SeekOrigin.End);
            if (info.offset + info.size > fs.Position)
            {
                return(new byte[0]);
            }
            fs.Seek(info.offset, 0);
            byte[] buff = new byte[info.size];
            fs.Read(buff, 0, info.size);
            fs.Close();
            return(buff);
        }
コード例 #2
0
        public byte[] ExportBinaryBundle(TOCBundleInfoStruct info)
        {
            if (info.isbase)
            {
                return(new byte[0]);
            }
            string     sbpath = Helpers.GetFileNameWithOutExtension(MyPath) + ".sb";
            FileStream fs     = new FileStream(sbpath, FileMode.Open, FileAccess.Read);

            fs.Seek(0, SeekOrigin.End);
            if (info.offset + info.size > fs.Position)
            {
                return(new byte[0]);
            }
            fs.Seek(info.offset, 0);
            byte[] buff = new byte[info.size];
            fs.Read(buff, 0, info.size);
            fs.Close();
            uint magic = BitConverter.ToUInt32(buff, 4);

            if (magic != 0xd58e799d)
            {
                return(new byte[0]);
            }
            return(buff);
        }
コード例 #3
0
ファイル: TOCFile.cs プロジェクト: tirnoney/DAIToolsWV
 public byte[] ExportBinaryBundle(TOCBundleInfoStruct info)
 {
     if (info.isbase)
         return new byte[0];
     string sbpath = Helpers.GetFileNameWithOutExtension(MyPath) + ".sb";
     FileStream fs = new FileStream(sbpath, FileMode.Open, FileAccess.Read);
     fs.Seek(0, SeekOrigin.End);
     if(info.offset+info.size > fs.Position)
         return new byte[0];
     fs.Seek(info.offset, 0);
     byte[] buff = new byte[info.size];
     fs.Read(buff, 0, info.size);
     fs.Close();
     uint magic = BitConverter.ToUInt32(buff, 4);
     if (magic != 0xd58e799d)
         return new byte[0];
     return buff;
 }
コード例 #4
0
ファイル: TOCFile.cs プロジェクト: tirnoney/DAIToolsWV
 public byte[] ExportBundleDataByPath(string path)
 {
     TOCBundleInfoStruct info = new TOCBundleInfoStruct();
     info.isbase = true;
     foreach (TOCBundleInfoStruct inf in bundles)
         if (inf.id.ToLower() == path.ToLower())
         {
             info = inf;
             break;
         }
     if (info.isbase)
         return new byte[0];
     string sbpath = Helpers.GetFileNameWithOutExtension(MyPath) + ".sb";
     FileStream fs = new FileStream(sbpath, FileMode.Open, FileAccess.Read);
     fs.Seek(0, SeekOrigin.End);
     if (info.offset + info.size > fs.Position)
         return new byte[0];
     fs.Seek(info.offset, 0);
     byte[] buff = new byte[info.size];
     fs.Read(buff, 0, info.size);
     fs.Close();
     return buff;
 }
コード例 #5
0
        private void ProcessBundles(BJSON.Field f)
        {
            List <BJSON.Entry> list = (List <BJSON.Entry>)f.data;

            foreach (BJSON.Entry e in list)
            {
                TOCBundleInfoStruct info = new TOCBundleInfoStruct();
                info.isdelta = false;
                foreach (BJSON.Field f2 in e.fields)
                {
                    switch (f2.fieldname)
                    {
                    case "id":
                        info.id = (string)f2.data;
                        break;

                    case "offset":
                        info.offset = Helpers.ReadInt(new MemoryStream((byte[])f2.data));
                        break;

                    case "size":
                        info.size = Helpers.ReadInt(new MemoryStream((byte[])f2.data));
                        break;

                    case "delta":
                        info.isdelta = (bool)f2.data;
                        break;

                    case "base":
                        info.isbase = (bool)f2.data;
                        break;
                    }
                }
                bundles.Add(info);
            }
        }
コード例 #6
0
ファイル: TOCFile.cs プロジェクト: tirnoney/DAIToolsWV
 private void ProcessBundles(BJSON.Field f)
 {
     List<BJSON.Entry> list = (List<BJSON.Entry>)f.data;
     foreach (BJSON.Entry e in list)
     {
         TOCBundleInfoStruct info = new TOCBundleInfoStruct();
         info.isdelta = false;
         foreach(BJSON.Field f2 in e.fields)
             switch (f2.fieldname)
             {
                 case "id":
                     info.id = (string)f2.data;
                     break;
                 case "offset":
                     info.offset = Helpers.ReadInt(new MemoryStream((byte[])f2.data));
                     break;
                 case "size":
                     info.size = Helpers.ReadInt(new MemoryStream((byte[])f2.data));
                     break;
                 case "delta":
                     info.isdelta = (bool)f2.data;
                     break;
                 case "base":
                     info.isbase = (bool)f2.data;
                     break;
             }
         bundles.Add(info);
     }
 }