ZoneLoading: Make AssetDumpers get the zone via their args

This commit is contained in:
Jan 2019-11-19 02:30:04 +01:00
parent 7077ba8ce3
commit 11168c782f
15 changed files with 30 additions and 29 deletions

View File

@ -10,15 +10,15 @@ template<class T>
class AbstractAssetDumper : public IAssetDumper<T> class AbstractAssetDumper : public IAssetDumper<T>
{ {
protected: protected:
virtual std::string GetFileNameForAsset(T* asset) = 0; virtual std::string GetFileNameForAsset(Zone* zone, T* asset) = 0;
virtual void DumpAsset(T* asset, FileAPI::File* out) = 0; virtual void DumpAsset(Zone* zone, T* asset, FileAPI::File* out) = 0;
public: public:
void DumpPool(AssetPool<T>* pool, const std::string& basePath) override void DumpPool(Zone* zone, AssetPool<T>* pool, const std::string& basePath) override
{ {
for(auto assetInfo : *pool) for(auto assetInfo : *pool)
{ {
std::string assetFilePath = utils::Path::Combine(basePath, GetFileNameForAsset(assetInfo->m_asset)); std::string assetFilePath = utils::Path::Combine(basePath, GetFileNameForAsset(zone, assetInfo->m_asset));
FileAPI::DirectoryCreate(utils::Path::GetDirectory(assetFilePath)); FileAPI::DirectoryCreate(utils::Path::GetDirectory(assetFilePath));
@ -26,7 +26,7 @@ public:
if(file.IsOpen()) if(file.IsOpen())
{ {
DumpAsset(assetInfo->m_asset, &file); DumpAsset(zone, assetInfo->m_asset, &file);
file.Close(); file.Close();
} }

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Zone/Zone.h"
#include "Pool/AssetPool.h" #include "Pool/AssetPool.h"
template<class T> template<class T>
@ -8,5 +9,5 @@ class IAssetDumper
public: public:
virtual ~IAssetDumper() = default; virtual ~IAssetDumper() = default;
virtual void DumpPool(AssetPool<T>* pool, const std::string& basePath) = 0; virtual void DumpPool(Zone* zone, AssetPool<T>* pool, const std::string& basePath) = 0;
}; };

View File

@ -2,7 +2,7 @@
using namespace T6; using namespace T6;
void AssetDumperLocalizeEntry::DumpPool(AssetPool<T6::LocalizeEntry>* pool, const std::string& basePath) std::string AssetDumperLocalizeEntry::GetNameOfLanguage(ZoneLanguage language)
{ {
// TODO: Add a dumping method that dumps all localized strings to a .str file and not in separate files. // TODO: Add a dumping method that dumps all localized strings to a .str file and not in separate files.
} }

View File

@ -6,5 +6,5 @@
class AssetDumperLocalizeEntry final : public IAssetDumper<T6::LocalizeEntry> class AssetDumperLocalizeEntry final : public IAssetDumper<T6::LocalizeEntry>
{ {
public: public:
void DumpPool(AssetPool<T6::LocalizeEntry>* pool, const std::string& basePath) override; void DumpPool(Zone* zone, AssetPool<T6::LocalizeEntry>* pool, const std::string& basePath) override;
}; };

View File

@ -2,12 +2,12 @@
using namespace T6; using namespace T6;
std::string AssetDumperQdb::GetFileNameForAsset(Qdb* asset) std::string AssetDumperQdb::GetFileNameForAsset(Zone* zone, Qdb* asset)
{ {
return std::string(asset->name); return std::string(asset->name);
} }
void AssetDumperQdb::DumpAsset(Qdb* asset, FileAPI::File* out) void AssetDumperQdb::DumpAsset(Zone* zone, Qdb* asset, FileAPI::File* out)
{ {
out->Write(asset->buffer, 1, asset->len); out->Write(asset->buffer, 1, asset->len);
} }

View File

@ -6,6 +6,6 @@
class AssetDumperQdb final : public AbstractAssetDumper<T6::Qdb> class AssetDumperQdb final : public AbstractAssetDumper<T6::Qdb>
{ {
protected: protected:
std::string GetFileNameForAsset(T6::Qdb* asset) override; std::string GetFileNameForAsset(Zone* zone, T6::Qdb* asset) override;
void DumpAsset(T6::Qdb* asset, FileAPI::File* out) override; void DumpAsset(Zone* zone, T6::Qdb* asset, FileAPI::File* out) override;
}; };

View File

@ -2,12 +2,12 @@
using namespace T6; using namespace T6;
std::string AssetDumperRawFile::GetFileNameForAsset(RawFile* asset) std::string AssetDumperRawFile::GetFileNameForAsset(Zone* zone, RawFile* asset)
{ {
return std::string(asset->name); return std::string(asset->name);
} }
void AssetDumperRawFile::DumpAsset(RawFile* asset, FileAPI::File* out) void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* out)
{ {
out->Write(asset->buffer, 1, asset->len); out->Write(asset->buffer, 1, asset->len);
} }

View File

@ -6,6 +6,6 @@
class AssetDumperRawFile final : public AbstractAssetDumper<T6::RawFile> class AssetDumperRawFile final : public AbstractAssetDumper<T6::RawFile>
{ {
protected: protected:
std::string GetFileNameForAsset(T6::RawFile* asset) override; std::string GetFileNameForAsset(Zone* zone, T6::RawFile* asset) override;
void DumpAsset(T6::RawFile* asset, FileAPI::File* out) override; void DumpAsset(Zone* zone, T6::RawFile* asset, FileAPI::File* out) override;
}; };

View File

@ -2,12 +2,12 @@
using namespace T6; using namespace T6;
std::string AssetDumperScriptParseTree::GetFileNameForAsset(ScriptParseTree* asset) std::string AssetDumperScriptParseTree::GetFileNameForAsset(Zone* zone, ScriptParseTree* asset)
{ {
return std::string(asset->name); return std::string(asset->name);
} }
void AssetDumperScriptParseTree::DumpAsset(ScriptParseTree* asset, FileAPI::File* out) void AssetDumperScriptParseTree::DumpAsset(Zone* zone, ScriptParseTree* asset, FileAPI::File* out)
{ {
out->Write(asset->buffer, 1, asset->len); out->Write(asset->buffer, 1, asset->len);
} }

View File

@ -6,6 +6,6 @@
class AssetDumperScriptParseTree final : public AbstractAssetDumper<T6::ScriptParseTree> class AssetDumperScriptParseTree final : public AbstractAssetDumper<T6::ScriptParseTree>
{ {
protected: protected:
std::string GetFileNameForAsset(T6::ScriptParseTree* asset) override; std::string GetFileNameForAsset(Zone* zone, T6::ScriptParseTree* asset) override;
void DumpAsset(T6::ScriptParseTree* asset, FileAPI::File* out) override; void DumpAsset(Zone* zone, T6::ScriptParseTree* asset, FileAPI::File* out) override;
}; };

View File

@ -2,12 +2,12 @@
using namespace T6; using namespace T6;
std::string AssetDumperSlug::GetFileNameForAsset(Slug* asset) std::string AssetDumperSlug::GetFileNameForAsset(Zone* zone, Slug* asset)
{ {
return std::string(asset->name); return std::string(asset->name);
} }
void AssetDumperSlug::DumpAsset(Slug* asset, FileAPI::File* out) void AssetDumperSlug::DumpAsset(Zone* zone, Slug* asset, FileAPI::File* out)
{ {
out->Write(asset->buffer, 1, asset->len); out->Write(asset->buffer, 1, asset->len);
} }

View File

@ -6,6 +6,6 @@
class AssetDumperSlug final : public AbstractAssetDumper<T6::Slug> class AssetDumperSlug final : public AbstractAssetDumper<T6::Slug>
{ {
protected: protected:
std::string GetFileNameForAsset(T6::Slug* asset) override; std::string GetFileNameForAsset(Zone* zone, T6::Slug* asset) override;
void DumpAsset(T6::Slug* asset, FileAPI::File* out) override; void DumpAsset(Zone* zone, T6::Slug* asset, FileAPI::File* out) override;
}; };

View File

@ -2,12 +2,12 @@
using namespace T6; using namespace T6;
std::string AssetDumperStringTable::GetFileNameForAsset(StringTable* asset) std::string AssetDumperStringTable::GetFileNameForAsset(Zone* zone, StringTable* asset)
{ {
return std::string(asset->name); return std::string(asset->name);
} }
void AssetDumperStringTable::DumpAsset(StringTable* asset, FileAPI::File* out) void AssetDumperStringTable::DumpAsset(Zone* zone, StringTable* asset, FileAPI::File* out)
{ {
char separator[]{ ',' }; char separator[]{ ',' };
char newLine[]{ '\n' }; char newLine[]{ '\n' };

View File

@ -6,6 +6,6 @@
class AssetDumperStringTable final : public AbstractAssetDumper<T6::StringTable> class AssetDumperStringTable final : public AbstractAssetDumper<T6::StringTable>
{ {
protected: protected:
std::string GetFileNameForAsset(T6::StringTable* asset) override; std::string GetFileNameForAsset(Zone* zone, T6::StringTable* asset) override;
void DumpAsset(T6::StringTable* asset, FileAPI::File* out) override; void DumpAsset(Zone* zone, T6::StringTable* asset, FileAPI::File* out) override;
}; };

View File

@ -19,7 +19,7 @@ bool ZoneDumperT6::DumpZone(Zone* zone, const std::string& basePath)
if(assetPools->poolName) \ if(assetPools->poolName) \
{ \ { \
dumperType dumper; \ dumperType dumper; \
dumper.DumpPool(assetPools->poolName, basePath); \ dumper.DumpPool(zone, assetPools->poolName, basePath); \
} }
const auto assetPools = dynamic_cast<GameAssetPoolT6*>(zone->GetPools()); const auto assetPools = dynamic_cast<GameAssetPoolT6*>(zone->GetPools());