ResourcePacks: Support compression
This commit is contained in:
parent
d55e276d0b
commit
b6863ff0a2
|
@ -29,6 +29,7 @@ Manifest::Manifest(const std::string& json)
|
||||||
picojson::value& authors = out.get("authors");
|
picojson::value& authors = out.get("authors");
|
||||||
picojson::value& description = out.get("description");
|
picojson::value& description = out.get("description");
|
||||||
picojson::value& website = out.get("website");
|
picojson::value& website = out.get("website");
|
||||||
|
picojson::value& compressed = out.get("compressed");
|
||||||
|
|
||||||
if (!name.is<std::string>() || !id.is<std::string>() || !version.is<std::string>())
|
if (!name.is<std::string>() || !id.is<std::string>() || !version.is<std::string>())
|
||||||
{
|
{
|
||||||
|
@ -58,6 +59,9 @@ Manifest::Manifest(const std::string& json)
|
||||||
|
|
||||||
if (website.is<std::string>())
|
if (website.is<std::string>())
|
||||||
m_website = website.to_str();
|
m_website = website.to_str();
|
||||||
|
|
||||||
|
if (compressed.is<bool>())
|
||||||
|
m_compressed = compressed.get<bool>();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Manifest::IsValid() const
|
bool Manifest::IsValid() const
|
||||||
|
@ -99,4 +103,10 @@ const std::optional<std::string>& Manifest::GetWebsite() const
|
||||||
{
|
{
|
||||||
return m_website;
|
return m_website;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Manifest::IsCompressed() const
|
||||||
|
{
|
||||||
|
return m_compressed;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ResourcePack
|
} // namespace ResourcePack
|
||||||
|
|
|
@ -15,6 +15,7 @@ public:
|
||||||
explicit Manifest(const std::string& text);
|
explicit Manifest(const std::string& text);
|
||||||
|
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
|
bool IsCompressed() const;
|
||||||
|
|
||||||
const std::string& GetName() const;
|
const std::string& GetName() const;
|
||||||
const std::string& GetVersion() const;
|
const std::string& GetVersion() const;
|
||||||
|
@ -27,6 +28,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_valid = true;
|
bool m_valid = true;
|
||||||
|
bool m_compressed = false;
|
||||||
|
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
std::string m_version;
|
std::string m_version;
|
||||||
|
|
|
@ -126,8 +126,8 @@ ResourcePack::ResourcePack(const std::string& path) : m_path(path)
|
||||||
if (filename.compare(0, 9, "textures/") != 0 || texture_info.uncompressed_size == 0)
|
if (filename.compare(0, 9, "textures/") != 0 || texture_info.uncompressed_size == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If a texture is compressed, abort.
|
// If a texture is compressed and the manifest doesn't state that, abort.
|
||||||
if (texture_info.compression_method != 0)
|
if (!m_manifest->IsCompressed() && texture_info.compression_method != 0)
|
||||||
{
|
{
|
||||||
m_valid = false;
|
m_valid = false;
|
||||||
m_error = "Texture " + filename + " is compressed!";
|
m_error = "Texture " + filename + " is compressed!";
|
||||||
|
|
Loading…
Reference in New Issue