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(); } }
//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(); } }