diff --git a/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp b/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp index be2b3472..2c5d2e13 100644 --- a/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp +++ b/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp @@ -9,7 +9,7 @@ #include "ObjWriting.h" #include "RawFile/RawFileDumperIW3.h" #include "Sound/AssetDumperLoadedSound.h" -#include "StringTable/AssetDumperStringTable.h" +#include "StringTable/StringTableDumperIW3.h" #include "Weapon/AssetDumperWeapon.h" using namespace IW3; @@ -50,7 +50,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperFxEffectDef, m_fx, ASSET_TYPE_FX) // DUMP_ASSET_POOL(AssetDumperFxImpactTable, m_fx_impact_table, ASSET_TYPE_IMPACT_FX) DUMP_ASSET_POOL(raw_file::Dumper, m_raw_file, ASSET_TYPE_RAWFILE) - DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) + DUMP_ASSET_POOL(string_table::Dumper, m_string_table, ASSET_TYPE_STRINGTABLE) return true; diff --git a/src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.cpp b/src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.cpp deleted file mode 100644 index 26c8d514..00000000 --- a/src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "AssetDumperStringTable.h" - -#include "Csv/CsvStream.h" - -using namespace IW3; - -bool AssetDumperStringTable::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperStringTable::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* stringTable = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - CsvOutputStream csv(*assetFile); - - for (auto row = 0; row < stringTable->rowCount; row++) - { - for (auto column = 0; column < stringTable->columnCount; column++) - { - csv.WriteColumn(stringTable->values[column + row * stringTable->columnCount]); - } - - csv.NextRow(); - } -} diff --git a/src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.cpp b/src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.cpp new file mode 100644 index 00000000..381660a7 --- /dev/null +++ b/src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.cpp @@ -0,0 +1,34 @@ +#include "StringTableDumperIW3.h" + +#include "Csv/CsvStream.h" + +using namespace IW3; + +namespace IW3::string_table +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* stringTable = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + CsvOutputStream csv(*assetFile); + + for (auto row = 0; row < stringTable->rowCount; row++) + { + for (auto column = 0; column < stringTable->columnCount; column++) + { + csv.WriteColumn(stringTable->values[column + row * stringTable->columnCount]); + } + + csv.NextRow(); + } + } +} // namespace IW3::string_table diff --git a/src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.h b/src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.h similarity index 75% rename from src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.h rename to src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.h index 915f4a40..dcdbec06 100644 --- a/src/ObjWriting/Game/IW3/StringTable/AssetDumperStringTable.h +++ b/src/ObjWriting/Game/IW3/StringTable/StringTableDumperIW3.h @@ -3,9 +3,9 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW3/IW3.h" -namespace IW3 +namespace IW3::string_table { - class AssetDumperStringTable final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; diff --git a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp index c00e44f0..6da19f72 100644 --- a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp +++ b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp @@ -19,7 +19,7 @@ #include "Shader/AssetDumperVertexShader.h" #include "Sound/AssetDumperLoadedSound.h" #include "Sound/AssetDumperSndCurve.h" -#include "StringTable/AssetDumperStringTable.h" +#include "StringTable/StringTableDumperIW4.h" #include "StructuredDataDef/AssetDumperStructuredDataDefSet.h" #include "Techset/AssetDumperTechniqueSet.h" #include "Tracer/AssetDumperTracer.h" @@ -71,7 +71,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperFxEffectDef, m_fx, ASSET_TYPE_FX) // DUMP_ASSET_POOL(AssetDumperFxImpactTable, m_fx_impact_table, ASSET_TYPE_IMPACT_FX) DUMP_ASSET_POOL(raw_file::Dumper, m_raw_file, ASSET_TYPE_RAWFILE) - DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) + DUMP_ASSET_POOL(string_table::Dumper, m_string_table, ASSET_TYPE_STRINGTABLE) DUMP_ASSET_POOL(leaderboard::JsonDumper, m_leaderboard, ASSET_TYPE_LEADERBOARD) DUMP_ASSET_POOL(AssetDumperStructuredDataDefSet, m_structed_data_def_set, ASSET_TYPE_STRUCTURED_DATA_DEF) DUMP_ASSET_POOL(AssetDumperTracer, m_tracer, ASSET_TYPE_TRACER) diff --git a/src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.cpp b/src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.cpp deleted file mode 100644 index 8a7bd5e4..00000000 --- a/src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "AssetDumperStringTable.h" - -#include "Csv/CsvStream.h" - -using namespace IW4; - -bool AssetDumperStringTable::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperStringTable::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* stringTable = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - CsvOutputStream csv(*assetFile); - - for (auto row = 0; row < stringTable->rowCount; row++) - { - for (auto column = 0; column < stringTable->columnCount; column++) - { - const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; - if (cell->string != nullptr) - { - csv.WriteColumn(cell->string); - } - else - { - csv.WriteColumn(""); - } - } - - csv.NextRow(); - } -} diff --git a/src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.cpp b/src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.cpp new file mode 100644 index 00000000..7e86896a --- /dev/null +++ b/src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.cpp @@ -0,0 +1,42 @@ +#include "StringTableDumperIW4.h" + +#include "Csv/CsvStream.h" + +using namespace IW4; + +namespace IW4::string_table +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* stringTable = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + CsvOutputStream csv(*assetFile); + + for (auto row = 0; row < stringTable->rowCount; row++) + { + for (auto column = 0; column < stringTable->columnCount; column++) + { + const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; + if (cell->string != nullptr) + { + csv.WriteColumn(cell->string); + } + else + { + csv.WriteColumn(""); + } + } + + csv.NextRow(); + } + } +} // namespace IW4::string_table diff --git a/src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.h b/src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.h similarity index 68% rename from src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.h rename to src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.h index 9d50d431..2321c6ae 100644 --- a/src/ObjWriting/Game/IW4/StringTable/AssetDumperStringTable.h +++ b/src/ObjWriting/Game/IW4/StringTable/StringTableDumperIW4.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW4/IW4.h" -namespace IW4 +namespace IW4::string_table { - class AssetDumperStringTable final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace IW4 +} // namespace IW4::string_table diff --git a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp index 89618e2c..5bf579ea 100644 --- a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp +++ b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp @@ -13,7 +13,7 @@ #include "RawFile/RawFileDumperIW5.h" #include "Script/ScriptDumperIW5.h" #include "Sound/AssetDumperLoadedSound.h" -#include "StringTable/AssetDumperStringTable.h" +#include "StringTable/StringTableDumperIW5.h" #include "Weapon/AssetDumperWeapon.h" #include "Weapon/AssetDumperWeaponAttachment.h" @@ -63,7 +63,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperSurfaceFxTable, m_surface_fx_table, ASSET_TYPE_SURFACE_FX) DUMP_ASSET_POOL(raw_file::Dumper, m_raw_file, ASSET_TYPE_RAWFILE) DUMP_ASSET_POOL(script::Dumper, m_script_file, ASSET_TYPE_SCRIPTFILE) - DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) + DUMP_ASSET_POOL(string_table::Dumper, m_string_table, ASSET_TYPE_STRINGTABLE) DUMP_ASSET_POOL(leaderboard::JsonDumper, m_leaderboard, ASSET_TYPE_LEADERBOARD) // DUMP_ASSET_POOL(AssetDumperStructuredDataDefSet, m_structed_data_def_set, ASSET_TYPE_STRUCTURED_DATA_DEF) // DUMP_ASSET_POOL(AssetDumperTracerDef, m_tracer, ASSET_TYPE_TRACER) diff --git a/src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.cpp b/src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.cpp deleted file mode 100644 index 0612c075..00000000 --- a/src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "AssetDumperStringTable.h" - -#include "Csv/CsvStream.h" - -using namespace IW5; - -bool AssetDumperStringTable::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperStringTable::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* stringTable = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - CsvOutputStream csv(*assetFile); - - for (auto row = 0; row < stringTable->rowCount; row++) - { - for (auto column = 0; column < stringTable->columnCount; column++) - { - const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; - if (cell->string != nullptr) - { - csv.WriteColumn(cell->string); - } - else - { - csv.WriteColumn(""); - } - } - - csv.NextRow(); - } -} diff --git a/src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.cpp b/src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.cpp new file mode 100644 index 00000000..023013c1 --- /dev/null +++ b/src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.cpp @@ -0,0 +1,42 @@ +#include "StringTableDumperIW5.h" + +#include "Csv/CsvStream.h" + +using namespace IW5; + +namespace IW5::string_table +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* stringTable = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + CsvOutputStream csv(*assetFile); + + for (auto row = 0; row < stringTable->rowCount; row++) + { + for (auto column = 0; column < stringTable->columnCount; column++) + { + const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; + if (cell->string != nullptr) + { + csv.WriteColumn(cell->string); + } + else + { + csv.WriteColumn(""); + } + } + + csv.NextRow(); + } + } +} // namespace IW5::string_table diff --git a/src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.h b/src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.h similarity index 68% rename from src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.h rename to src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.h index 9e834267..fe6d5e4c 100644 --- a/src/ObjWriting/Game/IW5/StringTable/AssetDumperStringTable.h +++ b/src/ObjWriting/Game/IW5/StringTable/StringTableDumperIW5.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW5/IW5.h" -namespace IW5 +namespace IW5::string_table { - class AssetDumperStringTable final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace IW5 +} // namespace IW5::string_table diff --git a/src/ObjWriting/Game/T5/ObjWriterT5.cpp b/src/ObjWriting/Game/T5/ObjWriterT5.cpp index ce3c8eec..f224f067 100644 --- a/src/ObjWriting/Game/T5/ObjWriterT5.cpp +++ b/src/ObjWriting/Game/T5/ObjWriterT5.cpp @@ -8,7 +8,7 @@ #include "ObjWriting.h" #include "RawFile/RawFileDumperT5.h" #include "Sound/AssetDumperSndBank.h" -#include "StringTable/AssetDumperStringTable.h" +#include "StringTable/StringTableDumperT5.h" #include "Weapon/AssetDumperWeapon.h" using namespace T5; @@ -50,7 +50,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperFxEffectDef, m_fx, ASSET_TYPE_FX) // DUMP_ASSET_POOL(AssetDumperFxImpactTable, m_fx_impact_table, ASSET_TYPE_IMPACT_FX) DUMP_ASSET_POOL(raw_file::Dumper, m_raw_file, ASSET_TYPE_RAWFILE) - DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) + DUMP_ASSET_POOL(string_table::Dumper, m_string_table, ASSET_TYPE_STRINGTABLE) // DUMP_ASSET_POOL(AssetDumperPackIndex, m_pack_index, ASSET_TYPE_PACK_INDEX) // DUMP_ASSET_POOL(AssetDumperXGlobals, m_xglobals, ASSET_TYPE_XGLOBALS) // DUMP_ASSET_POOL(AssetDumperDDLRoot, m_ddl, ASSET_TYPE_DDL) diff --git a/src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.cpp b/src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.cpp deleted file mode 100644 index 77899c6f..00000000 --- a/src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "AssetDumperStringTable.h" - -#include "Csv/CsvStream.h" - -using namespace T5; - -bool AssetDumperStringTable::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperStringTable::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* stringTable = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - CsvOutputStream csv(*assetFile); - - for (auto row = 0; row < stringTable->rowCount; row++) - { - for (auto column = 0; column < stringTable->columnCount; column++) - { - const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; - if (cell->string != nullptr) - { - csv.WriteColumn(cell->string); - } - else - { - csv.WriteColumn(""); - } - } - - csv.NextRow(); - } -} diff --git a/src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.cpp b/src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.cpp new file mode 100644 index 00000000..e77ade0b --- /dev/null +++ b/src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.cpp @@ -0,0 +1,42 @@ +#include "StringTableDumperT5.h" + +#include "Csv/CsvStream.h" + +using namespace T5; + +namespace T5::string_table +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* stringTable = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + CsvOutputStream csv(*assetFile); + + for (auto row = 0; row < stringTable->rowCount; row++) + { + for (auto column = 0; column < stringTable->columnCount; column++) + { + const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; + if (cell->string != nullptr) + { + csv.WriteColumn(cell->string); + } + else + { + csv.WriteColumn(""); + } + } + + csv.NextRow(); + } + } +} // namespace T5::string_table diff --git a/src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.h b/src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.h similarity index 68% rename from src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.h rename to src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.h index 64b2739c..c9621b4d 100644 --- a/src/ObjWriting/Game/T5/StringTable/AssetDumperStringTable.h +++ b/src/ObjWriting/Game/T5/StringTable/StringTableDumperT5.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/T5/T5.h" -namespace T5 +namespace T5::string_table { - class AssetDumperStringTable final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace T5 +} // namespace T5::string_table diff --git a/src/ObjWriting/Game/T6/ObjWriterT6.cpp b/src/ObjWriting/Game/T6/ObjWriterT6.cpp index 73315ffe..4edd49fa 100644 --- a/src/ObjWriting/Game/T6/ObjWriterT6.cpp +++ b/src/ObjWriting/Game/T6/ObjWriterT6.cpp @@ -17,7 +17,7 @@ #include "Slug/SlugDumperT6.h" #include "Sound/AssetDumperSndBank.h" #include "Sound/AssetDumperSndDriverGlobals.h" -#include "StringTable/AssetDumperStringTable.h" +#include "StringTable/StringTableDumperT6.h" #include "Techset/AssetDumperTechniqueSet.h" #include "Tracer/AssetDumperTracer.h" #include "Vehicle/AssetDumperVehicle.h" @@ -76,7 +76,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperFxEffectDef, m_fx, ASSET_TYPE_FX) // DUMP_ASSET_POOL(AssetDumperFxImpactTable, m_fx_impact_table, ASSET_TYPE_IMPACT_FX) DUMP_ASSET_POOL(raw_file::Dumper, m_raw_file, ASSET_TYPE_RAWFILE) - DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) + DUMP_ASSET_POOL(string_table::Dumper, m_string_table, ASSET_TYPE_STRINGTABLE) DUMP_ASSET_POOL(leaderboard::JsonDumper, m_leaderboard, ASSET_TYPE_LEADERBOARD) // DUMP_ASSET_POOL(AssetDumperXGlobals, m_xglobals, ASSET_TYPE_XGLOBALS) // DUMP_ASSET_POOL(AssetDumperDDLRoot, m_ddl, ASSET_TYPE_DDL) diff --git a/src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.cpp b/src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.cpp deleted file mode 100644 index 2fb76cec..00000000 --- a/src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "AssetDumperStringTable.h" - -#include "Csv/CsvStream.h" - -using namespace T6; - -bool AssetDumperStringTable::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperStringTable::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* stringTable = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - CsvOutputStream csv(*assetFile); - - for (auto row = 0; row < stringTable->rowCount; row++) - { - for (auto column = 0; column < stringTable->columnCount; column++) - { - const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; - if (cell->string != nullptr) - { - csv.WriteColumn(cell->string); - } - else - { - csv.WriteColumn(""); - } - } - - csv.NextRow(); - } -} diff --git a/src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.cpp b/src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.cpp new file mode 100644 index 00000000..83f0c860 --- /dev/null +++ b/src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.cpp @@ -0,0 +1,42 @@ +#include "StringTableDumperT6.h" + +#include "Csv/CsvStream.h" + +using namespace T6; + +namespace T6::string_table +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* stringTable = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + CsvOutputStream csv(*assetFile); + + for (auto row = 0; row < stringTable->rowCount; row++) + { + for (auto column = 0; column < stringTable->columnCount; column++) + { + const auto* cell = &stringTable->values[column + row * stringTable->columnCount]; + if (cell->string != nullptr) + { + csv.WriteColumn(cell->string); + } + else + { + csv.WriteColumn(""); + } + } + + csv.NextRow(); + } + } +} // namespace T6::string_table diff --git a/src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.h b/src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.h similarity index 68% rename from src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.h rename to src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.h index 1618db88..0fbbdb18 100644 --- a/src/ObjWriting/Game/T6/StringTable/AssetDumperStringTable.h +++ b/src/ObjWriting/Game/T6/StringTable/StringTableDumperT6.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/T6/T6.h" -namespace T6 +namespace T6::string_table { - class AssetDumperStringTable final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace T6 +} // namespace T6::string_table