コード例 #1
0
        protected byte[] CompressMap()
        {
            int uncompressedSize = DynaBuffer.GetBytesUsed();

            MemoryStream ms = new MemoryStream();

            Ionic.Zlib.ZlibStream ws = new Ionic.Zlib.ZlibStream(ms, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.BestCompression, true);

            ws.Write(DynaBuffer.GetRawBuffer(), 0, uncompressedSize);
            ws.Flush();

            ws.Close();

            int len = (int)ms.Length;

            byte[] compressedData = ms.GetBuffer();
            // ms.Length();
            Array.Resize(ref compressedData, (int)ms.Length);

            DynamicOutputBuffer header = DynamicOutputBuffer.GetTempBuffer(64);

            header.WriteUInt16(Constants.WorldCodeHeaderSize);
            header.WriteUInt16(Constants.WorldCodeHeader);
            header.WriteUInt16(1);

            header.WriteUInt32(uncompressedSize);
            header.WriteUInt32(compressedData.Length);

            header.WriteBytes(compressedData);
            header.WriteUInt16(Constants.WorldCodeEndSize);
            header.WriteUInt16(Constants.WorldCodeEnd);

            return(header.GetFinalBuffer());
        }