Add support for map block version 29

This commit is contained in:
sfan5
2021-09-01 23:55:32 +02:00
parent 5c435f6459
commit b0ca3d7066
7 changed files with 163 additions and 37 deletions

View File

@ -1,8 +1,9 @@
#pragma once
#include <cstdint>
#include <unordered_map>
#include "types.h"
#include <ZstdDecompressor.h>
class BlockDecoder {
public:
@ -17,9 +18,11 @@ public:
private:
typedef std::unordered_map<uint16_t, std::string> NameMap;
NameMap m_nameMap;
int m_blockAirId;
int m_blockIgnoreId;
uint16_t m_blockAirId, m_blockIgnoreId;
u8 m_version, m_contentWidth;
ustring m_mapData;
// one instance for performance
ZstdDecompressor m_zstd_decompressor;
};

View File

@ -0,0 +1,22 @@
#pragma once
#include <cstdlib>
#include <string>
#include "types.h"
class ZstdDecompressor
{
public:
class DecompressError {};
ZstdDecompressor();
~ZstdDecompressor();
void setData(const u8 *data, size_t size, size_t seekPos);
size_t seekPos() const;
ustring decompress();
private:
void *m_stream; // ZSTD_DStream
const u8 *m_data;
size_t m_seekPos, m_size;
};