public static MythicPackage Read(string fileName)
        {
            using (FileStream stream = new FileStream(fileName, FileMode.Open))
            {
                using (BinaryReader reader = new BinaryReader(stream))
                {
                    MythicPackage myp = new MythicPackage();

                    int found = 0;
                    int index = 0;

                    myp.Info   = new FileInfo(fileName);
                    myp.Header = MythicPackageHeader.Read(reader);

                    MythicPackageBlock block = myp.Add(MythicPackageBlock.Read(reader, ref found));
                    block.Index = 0;

                    while (stream.Seek(block.NextBlock, SeekOrigin.Begin) != 0)
                    {
                        block       = myp.Add(MythicPackageBlock.Read(reader, ref found));
                        block.Index = index + 1;
                        index      += 1;
                    }

                    myp.Complete = (found * 100) / (double)myp.Header.FileCount;

                    return(myp);
                }
            }
        }
		public static MythicPackageHeader Read( BinaryReader reader )
		{
			byte[] id = reader.ReadBytes( 4 );

			if ( id[ 0 ] != 'M' || id[ 1 ] != 'Y' || id[ 2 ] != 'P' || id[ 3 ] != 0 )
				throw new Exception( "This is not a Mythic Package file!" );

			MythicPackageHeader h = new MythicPackageHeader();

			h.Version = reader.ReadInt32();
			h.Misc = reader.ReadInt32(); // must be 0xFD23EC43
			h.HeaderSize = reader.ReadInt32();

			reader.ReadBytes( 4 ); // 0x0000000000

			h.BlockSize = reader.ReadInt32();
			h.FileCount = reader.ReadInt32();

			reader.ReadBytes( h.HeaderSize - 28 ); // 0x00...

			return h;
		}
Exemple #3
0
        public static MythicPackageHeader Read(BinaryReader reader)
        {
            byte[] id = reader.ReadBytes(4);

            if (id[0] != 'M' || id[1] != 'Y' || id[2] != 'P' || id[3] != 0)
            {
                throw new Exception("This is not a Mythic Package file!");
            }

            MythicPackageHeader h = new MythicPackageHeader();

            h.Version    = reader.ReadInt32();
            h.Misc       = reader.ReadInt32();       // must be 0xFD23EC43
            h.HeaderSize = reader.ReadInt32();

            reader.ReadBytes(4);               // 0x0000000000

            h.BlockSize = reader.ReadInt32();
            h.FileCount = reader.ReadInt32();

            reader.ReadBytes(h.HeaderSize - 28);               // 0x00...

            return(h);
        }