コード例 #1
0
        public void Load()
        {
            MemoryStream       Buffer;
            LevelUpItem        Item;
            PangyaBinaryReader Reader = null;

            using (var zip = ZipFile.OpenRead("data/pangya_gb.iff"))                             //ler o arquivo de base
            {
                var FileZip = zip.Entries.FirstOrDefault(c => c.Name == "LevelUpPrizeItem.iff"); //verifica se existe o arquivo

                if (FileZip == null)
                {
                    throw new Exception(" data\\LevelUpPrizeItem.iff is not loaded");
                }
                else
                {
                    Buffer = new MemoryStream();
                    FileZip.Open().CopyTo(Buffer);
                }
            }

            try
            {
                Reader = new PangyaBinaryReader(Buffer);
                if (new string(Reader.ReadChars(2)) == "PK")
                {
                    throw new Exception("The given IFF file is a ZIP file, please unpack it before attempting to parse it");
                }
                Reader.Seek(0, 0);

                Reader.ReadUInt16(out ushort recordCount);
                long recordLength = ((Reader.GetSize() - 8L) / (recordCount));
                Reader.ReadUInt16(out BindingID);
                Reader.ReadUInt32(out Version);

                for (int i = 0; i < recordCount; i++)
                {
                    Item = (LevelUpItem)Reader.Read(new LevelUpItem());

                    this.Add(Item);
                }
            }
            finally
            {
                Reader.Dispose();
            }
        }
コード例 #2
0
        //Constructor
        public BallCollection()
        {
            MemoryStream       Buffer;
            PangyaBinaryReader Reader = null;
            IffBallData        Ball;

            using (var zip = ZipFile.OpenRead("data/pangya_gb.iff"))                 //ler o arquivo de base
            {
                var FileZip = zip.Entries.FirstOrDefault(c => c.Name == "Ball.iff"); //verifica se existe o arquivo

                if (FileZip == null)
                {
                    PangyaAPI.WriteConsole.WriteLine(" data\\Caddie.iff is not loaded");
                    return;
                }
                Buffer = new MemoryStream();
                FileZip.Open().CopyTo(Buffer);
            }

            try
            {
                Reader = new PangyaBinaryReader(Buffer);
                if (new string(Reader.ReadChars(2)) == "PK")
                {
                    throw new Exception("The given IFF file is a ZIP file, please unpack it before attempting to parse it");
                }

                Reader.Seek(0, 0);

                Reader.ReadUInt16(out ushort recordCount);
                long recordLength = ((Reader.GetSize() - 8L) / (recordCount));
                Reader.ReadUInt16(out BindingID);
                Reader.ReadUInt32(out Version);

                for (int i = 0; i < recordCount; i++)
                {
                    Ball = (IffBallData)Reader.Read(new IffBallData());

                    this.Add(Ball.Base.TypeID, Ball);
                }
            }
            finally
            {
                Reader.Dispose();
                Buffer.Dispose();
            }
        }