コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }