public AreaFile ReadZoneData(byte[] data) { var areaFile = new AreaFile(); using (var ms = new MemoryStream(data)) { var buffer = new byte[4]; ms.AssertAreaMagic(); ms.Read(buffer, 0, buffer.Length); int version = BitConverter.ToInt32(buffer, 0); if (version != 0) { throw new InvalidDataException("Not supported version of area format!"); } ms.Seek(4, SeekOrigin.Current); //ms.Read(buffer, 0, buffer.Length); //uint dataLen = BitConverter.ToUInt32(buffer, 0); ms.Read(buffer, 0, buffer.Length); int layerCount = BitConverter.ToInt32(buffer, 0); for (int lc = 0; lc < layerCount; lc++) { var areaList = new AreaColletion(); ms.Read(buffer, 0, buffer.Length); int areasToRead = BitConverter.ToInt32(buffer, 0); for (int a = 0; a < areasToRead; a++) { areaList.Add(ReadArea(ms)); } areaFile.AreaManagers.Add(areaList); } } return(areaFile); }
public AreaFile ReadZoneData(byte[] data) { var areaFile = new AreaFile(); using (var ms = new MemoryStream(data)) { var buffer = new byte[4]; ms.AssertAreaMagic(); ms.Read(buffer, 0, buffer.Length); int version = BitConverter.ToInt32(buffer, 0); if (version != 0) throw new InvalidDataException("Not supported version of area format!"); ms.Seek(4, SeekOrigin.Current); //ms.Read(buffer, 0, buffer.Length); //uint dataLen = BitConverter.ToUInt32(buffer, 0); ms.Read(buffer, 0, buffer.Length); int layerCount = BitConverter.ToInt32(buffer, 0); for (int lc = 0; lc < layerCount; lc++) { var areaList = new AreaColletion(); ms.Read(buffer, 0, buffer.Length); int areasToRead = BitConverter.ToInt32(buffer, 0); for (int a = 0; a < areasToRead; a++) areaList.Add(ReadArea(ms)); areaFile.AreaManagers.Add(areaList); } } return areaFile; }