mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-21 00:25:44 +00:00
Make AbstractAssetDumper use the XAssetInfo instead of the raw asset pointer to be able to access dependencies and scriptstrings
This commit is contained in:
parent
ab217bb1a9
commit
d942c5a625
@ -10,24 +10,22 @@ template<class T>
|
|||||||
class AbstractAssetDumper : public IAssetDumper<T>
|
class AbstractAssetDumper : public IAssetDumper<T>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual bool ShouldDump(T* asset) = 0;
|
virtual bool ShouldDump(XAssetInfo<T>* asset) = 0;
|
||||||
virtual std::string GetFileNameForAsset(Zone* zone, T* asset) = 0;
|
virtual std::string GetFileNameForAsset(Zone* zone, XAssetInfo<T>* asset) = 0;
|
||||||
virtual void DumpAsset(Zone* zone, T* asset, FileAPI::File* out) = 0;
|
virtual void DumpAsset(Zone* zone, XAssetInfo<T>* asset, FileAPI::File* out) = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void DumpPool(Zone* zone, 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)
|
||||||
{
|
{
|
||||||
T* asset = assetInfo->Asset();
|
|
||||||
|
|
||||||
if(assetInfo->m_name[0] == ','
|
if(assetInfo->m_name[0] == ','
|
||||||
|| !ShouldDump(asset))
|
|| !ShouldDump(assetInfo))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string assetFilePath = utils::Path::Combine(basePath, GetFileNameForAsset(zone, asset));
|
std::string assetFilePath = utils::Path::Combine(basePath, GetFileNameForAsset(zone, assetInfo));
|
||||||
|
|
||||||
FileAPI::DirectoryCreate(utils::Path::GetDirectory(assetFilePath));
|
FileAPI::DirectoryCreate(utils::Path::GetDirectory(assetFilePath));
|
||||||
|
|
||||||
@ -35,7 +33,7 @@ public:
|
|||||||
|
|
||||||
if(file.IsOpen())
|
if(file.IsOpen())
|
||||||
{
|
{
|
||||||
DumpAsset(zone, asset, &file);
|
DumpAsset(zone, assetInfo, &file);
|
||||||
|
|
||||||
file.Close();
|
file.Close();
|
||||||
}
|
}
|
||||||
|
@ -5,17 +5,18 @@
|
|||||||
|
|
||||||
using namespace IW4;
|
using namespace IW4;
|
||||||
|
|
||||||
bool AssetDumperAddonMapEnts::ShouldDump(AddonMapEnts* asset)
|
bool AssetDumperAddonMapEnts::ShouldDump(XAssetInfo<AddonMapEnts>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperAddonMapEnts::GetFileNameForAsset(Zone* zone, AddonMapEnts* asset)
|
std::string AssetDumperAddonMapEnts::GetFileNameForAsset(Zone* zone, XAssetInfo<AddonMapEnts>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperAddonMapEnts::DumpAsset(Zone* zone, AddonMapEnts* asset, FileAPI::File* out)
|
void AssetDumperAddonMapEnts::DumpAsset(Zone* zone, XAssetInfo<AddonMapEnts>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
out->Write(asset->entityString, 1, std::max(asset->numEntityChars - 1, 0));
|
const auto* addonMapEnts = asset->Asset();
|
||||||
|
out->Write(addonMapEnts->entityString, 1, std::max(addonMapEnts->numEntityChars - 1, 0));
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ namespace IW4
|
|||||||
class AssetDumperAddonMapEnts final : public AbstractAssetDumper<AddonMapEnts>
|
class AssetDumperAddonMapEnts final : public AbstractAssetDumper<AddonMapEnts>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(AddonMapEnts* asset) override;
|
bool ShouldDump(XAssetInfo<AddonMapEnts>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, AddonMapEnts* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<AddonMapEnts>* asset) override;
|
||||||
void DumpAsset(Zone* zone, AddonMapEnts* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<AddonMapEnts>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,17 +31,19 @@ AssetDumperGfxImage::~AssetDumperGfxImage()
|
|||||||
m_writer = nullptr;
|
m_writer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AssetDumperGfxImage::ShouldDump(GfxImage* asset)
|
bool AssetDumperGfxImage::ShouldDump(XAssetInfo<GfxImage>* asset)
|
||||||
{
|
{
|
||||||
return asset->cardMemory.platform[0] > 0;
|
const auto* image = asset->Asset();
|
||||||
|
return image->cardMemory.platform[0] > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperGfxImage::GetFileNameForAsset(Zone* zone, GfxImage* asset)
|
std::string AssetDumperGfxImage::GetFileNameForAsset(Zone* zone, XAssetInfo<GfxImage>* asset)
|
||||||
{
|
{
|
||||||
return "images/" + std::string(asset->name) + m_writer->GetFileExtension();
|
return "images/" + asset->m_name + m_writer->GetFileExtension();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperGfxImage::DumpAsset(Zone* zone, GfxImage* asset, FileAPI::File* out)
|
void AssetDumperGfxImage::DumpAsset(Zone* zone, XAssetInfo<GfxImage>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
m_writer->DumpImage(out, asset->texture.texture);
|
const auto* image = asset->Asset();
|
||||||
|
m_writer->DumpImage(out, image->texture.texture);
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,18 @@
|
|||||||
|
|
||||||
namespace IW4
|
namespace IW4
|
||||||
{
|
{
|
||||||
class AssetDumperGfxImage final : public AbstractAssetDumper<IW4::GfxImage>
|
class AssetDumperGfxImage final : public AbstractAssetDumper<GfxImage>
|
||||||
{
|
{
|
||||||
IImageWriter* m_writer;
|
IImageWriter* m_writer;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(IW4::GfxImage* asset) override;
|
bool ShouldDump(XAssetInfo<GfxImage>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, IW4::GfxImage* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<GfxImage>* asset) override;
|
||||||
void DumpAsset(Zone* zone, IW4::GfxImage* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<GfxImage>* asset, FileAPI::File* out) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AssetDumperGfxImage();
|
AssetDumperGfxImage();
|
||||||
~AssetDumperGfxImage();
|
~AssetDumperGfxImage() override;
|
||||||
|
|
||||||
AssetDumperGfxImage(const AssetDumperGfxImage& other) = delete;
|
AssetDumperGfxImage(const AssetDumperGfxImage& other) = delete;
|
||||||
AssetDumperGfxImage(AssetDumperGfxImage&& other) noexcept = delete;
|
AssetDumperGfxImage(AssetDumperGfxImage&& other) noexcept = delete;
|
||||||
|
@ -4,17 +4,17 @@
|
|||||||
|
|
||||||
using namespace IW4;
|
using namespace IW4;
|
||||||
|
|
||||||
bool AssetDumperLoadedSound::ShouldDump(LoadedSound* asset)
|
bool AssetDumperLoadedSound::ShouldDump(XAssetInfo<LoadedSound>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperLoadedSound::GetFileNameForAsset(Zone* zone, LoadedSound* asset)
|
std::string AssetDumperLoadedSound::GetFileNameForAsset(Zone* zone, XAssetInfo<LoadedSound>* asset)
|
||||||
{
|
{
|
||||||
return "sound/" + std::string(asset->name);
|
return "sound/" + asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperLoadedSound::DumpWavPcm(Zone* zone, LoadedSound* asset, FileAPI::File* out)
|
void AssetDumperLoadedSound::DumpWavPcm(Zone* zone, const LoadedSound* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
const uint32_t riffMasterChunkSize = sizeof WAV_CHUNK_ID_RIFF
|
const uint32_t riffMasterChunkSize = sizeof WAV_CHUNK_ID_RIFF
|
||||||
+ sizeof uint32_t
|
+ sizeof uint32_t
|
||||||
@ -55,16 +55,17 @@ void AssetDumperLoadedSound::DumpWavPcm(Zone* zone, LoadedSound* asset, FileAPI:
|
|||||||
out->Write(asset->sound.data, 1, asset->sound.info.data_len);
|
out->Write(asset->sound.data, 1, asset->sound.info.data_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperLoadedSound::DumpAsset(Zone* zone, LoadedSound* asset, FileAPI::File* out)
|
void AssetDumperLoadedSound::DumpAsset(Zone* zone, XAssetInfo<LoadedSound>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
switch (static_cast<WavFormat>(asset->sound.info.format))
|
const auto* loadedSound = asset->Asset();
|
||||||
|
switch (static_cast<WavFormat>(loadedSound->sound.info.format))
|
||||||
{
|
{
|
||||||
case WavFormat::PCM:
|
case WavFormat::PCM:
|
||||||
DumpWavPcm(zone, asset, out);
|
DumpWavPcm(zone, loadedSound, out);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("Unknown format %i for loaded sound: %s\n", asset->sound.info.format, asset->name);
|
printf("Unknown format %i for loaded sound: %s\n", loadedSound->sound.info.format, loadedSound->name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,10 @@ namespace IW4
|
|||||||
{
|
{
|
||||||
class AssetDumperLoadedSound final : public AbstractAssetDumper<LoadedSound>
|
class AssetDumperLoadedSound final : public AbstractAssetDumper<LoadedSound>
|
||||||
{
|
{
|
||||||
static void DumpWavPcm(Zone* zone, LoadedSound* asset, FileAPI::File* out);
|
static void DumpWavPcm(Zone* zone, const LoadedSound* asset, FileAPI::File* out);
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(LoadedSound* asset) override;
|
bool ShouldDump(XAssetInfo<LoadedSound>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, LoadedSound* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<LoadedSound>* asset) override;
|
||||||
void DumpAsset(Zone* zone, LoadedSound* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<LoadedSound>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
namespace IW4
|
namespace IW4
|
||||||
{
|
{
|
||||||
class AssetDumperLocalizeEntry final : public IAssetDumper<IW4::LocalizeEntry>
|
class AssetDumperLocalizeEntry final : public IAssetDumper<LocalizeEntry>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void DumpPool(Zone* zone, AssetPool<IW4::LocalizeEntry>* pool, const std::string& basePath) override;
|
void DumpPool(Zone* zone, AssetPool<LocalizeEntry>* pool, const std::string& basePath) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,19 +4,20 @@
|
|||||||
|
|
||||||
using namespace IW4;
|
using namespace IW4;
|
||||||
|
|
||||||
bool AssetDumperRawFile::ShouldDump(RawFile* asset)
|
bool AssetDumperRawFile::ShouldDump(XAssetInfo<RawFile>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperRawFile::GetFileNameForAsset(Zone* zone, RawFile* asset)
|
std::string AssetDumperRawFile::GetFileNameForAsset(Zone* zone, XAssetInfo<RawFile>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* out)
|
void AssetDumperRawFile::DumpAsset(Zone* zone, XAssetInfo<RawFile>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
if (asset->compressedLen > 0)
|
const auto* rawFile = asset->Asset();
|
||||||
|
if (rawFile->compressedLen > 0)
|
||||||
{
|
{
|
||||||
z_stream_s zs{};
|
z_stream_s zs{};
|
||||||
|
|
||||||
@ -33,12 +34,12 @@ void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* ou
|
|||||||
throw std::exception("Initializing inflate failed");
|
throw std::exception("Initializing inflate failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
zs.next_in = reinterpret_cast<const Bytef*>(asset->data.compressedBuffer);
|
zs.next_in = reinterpret_cast<const Bytef*>(rawFile->data.compressedBuffer);
|
||||||
zs.avail_in = asset->compressedLen;
|
zs.avail_in = rawFile->compressedLen;
|
||||||
|
|
||||||
Bytef buffer[0x1000];
|
Bytef buffer[0x1000];
|
||||||
|
|
||||||
while(zs.avail_in > 0)
|
while (zs.avail_in > 0)
|
||||||
{
|
{
|
||||||
zs.next_out = buffer;
|
zs.next_out = buffer;
|
||||||
zs.avail_out = sizeof buffer;
|
zs.avail_out = sizeof buffer;
|
||||||
@ -46,7 +47,7 @@ void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* ou
|
|||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
printf("Inflate failed for dumping rawfile '%s'\n", asset->name);
|
printf("Inflate failed for dumping rawfile '%s'\n", rawFile->name);
|
||||||
inflateEnd(&zs);
|
inflateEnd(&zs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -56,8 +57,8 @@ void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* ou
|
|||||||
|
|
||||||
inflateEnd(&zs);
|
inflateEnd(&zs);
|
||||||
}
|
}
|
||||||
else if (asset->len > 0)
|
else if (rawFile->len > 0)
|
||||||
{
|
{
|
||||||
out->Write(asset->data.buffer, 1, asset->len);
|
out->Write(rawFile->data.buffer, 1, rawFile->len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ namespace IW4
|
|||||||
class AssetDumperRawFile final : public AbstractAssetDumper<RawFile>
|
class AssetDumperRawFile final : public AbstractAssetDumper<RawFile>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(RawFile* asset) override;
|
bool ShouldDump(XAssetInfo<RawFile>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, RawFile* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<RawFile>* asset) override;
|
||||||
void DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<RawFile>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,25 +4,26 @@
|
|||||||
|
|
||||||
using namespace IW4;
|
using namespace IW4;
|
||||||
|
|
||||||
bool AssetDumperStringTable::ShouldDump(StringTable* asset)
|
bool AssetDumperStringTable::ShouldDump(XAssetInfo<StringTable>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperStringTable::GetFileNameForAsset(Zone* zone, StringTable* asset)
|
std::string AssetDumperStringTable::GetFileNameForAsset(Zone* zone, XAssetInfo<StringTable>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperStringTable::DumpAsset(Zone* zone, StringTable* asset, FileAPI::File* out)
|
void AssetDumperStringTable::DumpAsset(Zone* zone, XAssetInfo<StringTable>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
|
const auto* stringTable = asset->Asset();
|
||||||
CsvWriter csv(out);
|
CsvWriter csv(out);
|
||||||
|
|
||||||
for (int row = 0; row < asset->rowCount; row++)
|
for (int row = 0; row < stringTable->rowCount; row++)
|
||||||
{
|
{
|
||||||
for (int column = 0; column < asset->columnCount; column++)
|
for (int column = 0; column < stringTable->columnCount; column++)
|
||||||
{
|
{
|
||||||
const auto* cell = &asset->values[column + row * asset->columnCount];
|
const auto* cell = &stringTable->values[column + row * stringTable->columnCount];
|
||||||
csv.WriteColumn(cell->string);
|
csv.WriteColumn(cell->string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace IW4
|
namespace IW4
|
||||||
{
|
{
|
||||||
class AssetDumperStringTable final : public AbstractAssetDumper<IW4::StringTable>
|
class AssetDumperStringTable final : public AbstractAssetDumper<StringTable>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(IW4::StringTable* asset) override;
|
bool ShouldDump(XAssetInfo<StringTable>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, IW4::StringTable* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<StringTable>* asset) override;
|
||||||
void DumpAsset(Zone* zone, IW4::StringTable* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<StringTable>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -255,18 +255,18 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool AssetDumperFontIcon::ShouldDump(FontIcon* asset)
|
bool AssetDumperFontIcon::ShouldDump(XAssetInfo<FontIcon>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperFontIcon::GetFileNameForAsset(Zone* zone, FontIcon* asset)
|
std::string AssetDumperFontIcon::GetFileNameForAsset(Zone* zone, XAssetInfo<FontIcon>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperFontIcon::DumpAsset(Zone* zone, FontIcon* asset, FileAPI::File* out)
|
void AssetDumperFontIcon::DumpAsset(Zone* zone, XAssetInfo<FontIcon>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
AssetDumperFontIconInternal dumper(out);
|
AssetDumperFontIconInternal dumper(out);
|
||||||
dumper.DumpFontIcon(asset);
|
dumper.DumpFontIcon(asset->Asset());
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperFontIcon final : public AbstractAssetDumper<T6::FontIcon>
|
class AssetDumperFontIcon final : public AbstractAssetDumper<FontIcon>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::FontIcon* asset) override;
|
bool ShouldDump(XAssetInfo<FontIcon>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::FontIcon* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<FontIcon>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::FontIcon* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<FontIcon>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,17 +31,19 @@ AssetDumperGfxImage::~AssetDumperGfxImage()
|
|||||||
m_writer = nullptr;
|
m_writer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AssetDumperGfxImage::ShouldDump(GfxImage* asset)
|
bool AssetDumperGfxImage::ShouldDump(XAssetInfo<GfxImage>* asset)
|
||||||
{
|
{
|
||||||
return asset->loadedSize > 0;
|
const auto* image = asset->Asset();
|
||||||
|
return image->loadedSize > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperGfxImage::GetFileNameForAsset(Zone* zone, GfxImage* asset)
|
std::string AssetDumperGfxImage::GetFileNameForAsset(Zone* zone, XAssetInfo<GfxImage>* asset)
|
||||||
{
|
{
|
||||||
return "images/" + std::string(asset->name) + m_writer->GetFileExtension();
|
return "images/" + asset->m_name + m_writer->GetFileExtension();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperGfxImage::DumpAsset(Zone* zone, GfxImage* asset, FileAPI::File* out)
|
void AssetDumperGfxImage::DumpAsset(Zone* zone, XAssetInfo<GfxImage>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
m_writer->DumpImage(out, asset->texture.texture);
|
const auto* image = asset->Asset();
|
||||||
|
m_writer->DumpImage(out, image->texture.texture);
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,18 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperGfxImage final : public AbstractAssetDumper<T6::GfxImage>
|
class AssetDumperGfxImage final : public AbstractAssetDumper<GfxImage>
|
||||||
{
|
{
|
||||||
IImageWriter* m_writer;
|
IImageWriter* m_writer;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::GfxImage* asset) override;
|
bool ShouldDump(XAssetInfo<GfxImage>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::GfxImage* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<GfxImage>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::GfxImage* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<GfxImage>* asset, FileAPI::File* out) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AssetDumperGfxImage();
|
AssetDumperGfxImage();
|
||||||
~AssetDumperGfxImage();
|
~AssetDumperGfxImage() override;
|
||||||
|
|
||||||
AssetDumperGfxImage(const AssetDumperGfxImage& other) = delete;
|
AssetDumperGfxImage(const AssetDumperGfxImage& other) = delete;
|
||||||
AssetDumperGfxImage(AssetDumperGfxImage&& other) noexcept = delete;
|
AssetDumperGfxImage(AssetDumperGfxImage&& other) noexcept = delete;
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperLocalizeEntry final : public IAssetDumper<T6::LocalizeEntry>
|
class AssetDumperLocalizeEntry final : public IAssetDumper<LocalizeEntry>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void DumpPool(Zone* zone, AssetPool<T6::LocalizeEntry>* pool, const std::string& basePath) override;
|
void DumpPool(Zone* zone, AssetPool<LocalizeEntry>* pool, const std::string& basePath) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
|
|
||||||
using namespace T6;
|
using namespace T6;
|
||||||
|
|
||||||
bool AssetDumperQdb::ShouldDump(Qdb* asset)
|
bool AssetDumperQdb::ShouldDump(XAssetInfo<Qdb>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperQdb::GetFileNameForAsset(Zone* zone, Qdb* asset)
|
std::string AssetDumperQdb::GetFileNameForAsset(Zone* zone, XAssetInfo<Qdb>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperQdb::DumpAsset(Zone* zone, Qdb* asset, FileAPI::File* out)
|
void AssetDumperQdb::DumpAsset(Zone* zone, XAssetInfo<Qdb>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
out->Write(asset->buffer, 1, asset->len);
|
const auto* qdb = asset->Asset();
|
||||||
|
out->Write(qdb->buffer, 1, qdb->len);
|
||||||
}
|
}
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperQdb final : public AbstractAssetDumper<T6::Qdb>
|
class AssetDumperQdb final : public AbstractAssetDumper<Qdb>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::Qdb* asset) override;
|
bool ShouldDump(XAssetInfo<Qdb>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::Qdb* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<Qdb>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::Qdb* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<Qdb>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
|
|
||||||
using namespace T6;
|
using namespace T6;
|
||||||
|
|
||||||
bool AssetDumperRawFile::ShouldDump(RawFile* asset)
|
bool AssetDumperRawFile::ShouldDump(XAssetInfo<RawFile>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperRawFile::GetFileNameForAsset(Zone* zone, RawFile* asset)
|
std::string AssetDumperRawFile::GetFileNameForAsset(Zone* zone, XAssetInfo<RawFile>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperRawFile::DumpAsset(Zone* zone, RawFile* asset, FileAPI::File* out)
|
void AssetDumperRawFile::DumpAsset(Zone* zone, XAssetInfo<RawFile>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
out->Write(asset->buffer, 1, asset->len);
|
const auto* rawFile = asset->Asset();
|
||||||
|
out->Write(rawFile->buffer, 1, rawFile->len);
|
||||||
}
|
}
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperRawFile final : public AbstractAssetDumper<T6::RawFile>
|
class AssetDumperRawFile final : public AbstractAssetDumper<RawFile>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::RawFile* asset) override;
|
bool ShouldDump(XAssetInfo<RawFile>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::RawFile* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<RawFile>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::RawFile* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<RawFile>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
|
|
||||||
using namespace T6;
|
using namespace T6;
|
||||||
|
|
||||||
bool AssetDumperScriptParseTree::ShouldDump(ScriptParseTree* asset)
|
bool AssetDumperScriptParseTree::ShouldDump(XAssetInfo<ScriptParseTree>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperScriptParseTree::GetFileNameForAsset(Zone* zone, ScriptParseTree* asset)
|
std::string AssetDumperScriptParseTree::GetFileNameForAsset(Zone* zone, XAssetInfo<ScriptParseTree>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperScriptParseTree::DumpAsset(Zone* zone, ScriptParseTree* asset, FileAPI::File* out)
|
void AssetDumperScriptParseTree::DumpAsset(Zone* zone, XAssetInfo<ScriptParseTree>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
out->Write(asset->buffer, 1, asset->len);
|
const auto* scriptParseTree = asset->Asset();
|
||||||
|
out->Write(scriptParseTree->buffer, 1, scriptParseTree->len);
|
||||||
}
|
}
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperScriptParseTree final : public AbstractAssetDumper<T6::ScriptParseTree>
|
class AssetDumperScriptParseTree final : public AbstractAssetDumper<ScriptParseTree>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::ScriptParseTree* asset) override;
|
bool ShouldDump(XAssetInfo<ScriptParseTree>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::ScriptParseTree* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<ScriptParseTree>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::ScriptParseTree* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<ScriptParseTree>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
|
|
||||||
using namespace T6;
|
using namespace T6;
|
||||||
|
|
||||||
bool AssetDumperSlug::ShouldDump(Slug* asset)
|
bool AssetDumperSlug::ShouldDump(XAssetInfo<Slug>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperSlug::GetFileNameForAsset(Zone* zone, Slug* asset)
|
std::string AssetDumperSlug::GetFileNameForAsset(Zone* zone, XAssetInfo<Slug>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperSlug::DumpAsset(Zone* zone, Slug* asset, FileAPI::File* out)
|
void AssetDumperSlug::DumpAsset(Zone* zone, XAssetInfo<Slug>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
out->Write(asset->buffer, 1, asset->len);
|
const auto* slug = asset->Asset();
|
||||||
|
out->Write(slug->buffer, 1, slug->len);
|
||||||
}
|
}
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperSlug final : public AbstractAssetDumper<T6::Slug>
|
class AssetDumperSlug final : public AbstractAssetDumper<Slug>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::Slug* asset) override;
|
bool ShouldDump(XAssetInfo<Slug>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::Slug* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<Slug>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::Slug* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<Slug>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,25 +4,26 @@
|
|||||||
|
|
||||||
using namespace T6;
|
using namespace T6;
|
||||||
|
|
||||||
bool AssetDumperStringTable::ShouldDump(StringTable* asset)
|
bool AssetDumperStringTable::ShouldDump(XAssetInfo<StringTable>* asset)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AssetDumperStringTable::GetFileNameForAsset(Zone* zone, StringTable* asset)
|
std::string AssetDumperStringTable::GetFileNameForAsset(Zone* zone, XAssetInfo<StringTable>* asset)
|
||||||
{
|
{
|
||||||
return std::string(asset->name);
|
return asset->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetDumperStringTable::DumpAsset(Zone* zone, StringTable* asset, FileAPI::File* out)
|
void AssetDumperStringTable::DumpAsset(Zone* zone, XAssetInfo<StringTable>* asset, FileAPI::File* out)
|
||||||
{
|
{
|
||||||
|
const auto* stringTable = asset->Asset();
|
||||||
CsvWriter csv(out);
|
CsvWriter csv(out);
|
||||||
|
|
||||||
for(int row = 0; row < asset->rowCount; row++)
|
for(int row = 0; row < stringTable->rowCount; row++)
|
||||||
{
|
{
|
||||||
for(int column = 0; column < asset->columnCount; column++)
|
for(int column = 0; column < stringTable->columnCount; column++)
|
||||||
{
|
{
|
||||||
const auto cell = &asset->values[column + row * asset->columnCount];
|
const auto* cell = &stringTable->values[column + row * stringTable->columnCount];
|
||||||
csv.WriteColumn(cell->string);
|
csv.WriteColumn(cell->string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
namespace T6
|
namespace T6
|
||||||
{
|
{
|
||||||
class AssetDumperStringTable final : public AbstractAssetDumper<T6::StringTable>
|
class AssetDumperStringTable final : public AbstractAssetDumper<StringTable>
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool ShouldDump(T6::StringTable* asset) override;
|
bool ShouldDump(XAssetInfo<StringTable>* asset) override;
|
||||||
std::string GetFileNameForAsset(Zone* zone, T6::StringTable* asset) override;
|
std::string GetFileNameForAsset(Zone* zone, XAssetInfo<StringTable>* asset) override;
|
||||||
void DumpAsset(Zone* zone, T6::StringTable* asset, FileAPI::File* out) override;
|
void DumpAsset(Zone* zone, XAssetInfo<StringTable>* asset, FileAPI::File* out) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user