mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-02-14 19:33:02 +00:00
feat: report on unlinking progress
This commit is contained in:
@@ -133,19 +133,14 @@ namespace
|
||||
|
||||
namespace font_icon
|
||||
{
|
||||
bool CsvDumperT6::ShouldDump(XAssetInfo<FontIcon>* asset)
|
||||
void CsvDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<FontIcon>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void CsvDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<FontIcon>* asset)
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
Dumper dumper(*assetFile);
|
||||
dumper.Dump(*asset->Asset());
|
||||
dumper.Dump(*asset.Asset());
|
||||
}
|
||||
} // namespace font_icon
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace font_icon
|
||||
class CsvDumperT6 final : public AbstractAssetDumper<T6::FontIcon>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::FontIcon>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::FontIcon>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::FontIcon>& asset) override;
|
||||
};
|
||||
} // namespace font_icon
|
||||
|
||||
@@ -78,18 +78,13 @@ namespace
|
||||
|
||||
namespace font_icon
|
||||
{
|
||||
bool JsonDumperT6::ShouldDump(XAssetInfo<FontIcon>* asset)
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<FontIcon>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<FontIcon>* asset)
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetJsonFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetJsonFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
DumpFontIcon(*assetFile, *asset->Asset());
|
||||
DumpFontIcon(*assetFile, *asset.Asset());
|
||||
}
|
||||
} // namespace font_icon
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace font_icon
|
||||
class JsonDumperT6 final : public AbstractAssetDumper<T6::FontIcon>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::FontIcon>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::FontIcon>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::FontIcon>& asset) override;
|
||||
};
|
||||
} // namespace font_icon
|
||||
|
||||
@@ -94,19 +94,14 @@ namespace image
|
||||
}
|
||||
}
|
||||
|
||||
bool DumperT6::ShouldDump(XAssetInfo<GfxImage>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<GfxImage>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<GfxImage>* asset)
|
||||
{
|
||||
const auto* image = asset->Asset();
|
||||
const auto* image = asset.Asset();
|
||||
const auto texture = LoadImageData(context.m_obj_search_path, *image);
|
||||
if (!texture)
|
||||
return;
|
||||
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAsset(asset->m_name, m_writer->GetFileExtension()));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAsset(asset.m_name, m_writer->GetFileExtension()));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -14,8 +14,7 @@ namespace image
|
||||
DumperT6();
|
||||
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::GfxImage>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::GfxImage>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::GfxImage>& asset) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<IImageWriter> m_writer;
|
||||
|
||||
@@ -98,19 +98,14 @@ namespace
|
||||
|
||||
namespace leaderboard
|
||||
{
|
||||
bool JsonDumperT6::ShouldDump(XAssetInfo<LeaderboardDef>* asset)
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<LeaderboardDef>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<LeaderboardDef>* asset)
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetJsonFileNameForAsset(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetJsonFileNameForAsset(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
Dumper dumper(*assetFile);
|
||||
dumper.Dump(*asset->Asset());
|
||||
dumper.Dump(*asset.Asset());
|
||||
}
|
||||
} // namespace leaderboard
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace leaderboard
|
||||
class JsonDumperT6 final : public AbstractAssetDumper<T6::LeaderboardDef>
|
||||
{
|
||||
protected:
|
||||
[[nodiscard]] bool ShouldDump(XAssetInfo<T6::LeaderboardDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::LeaderboardDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::LeaderboardDef>& asset) override;
|
||||
};
|
||||
} // namespace leaderboard
|
||||
|
||||
@@ -11,9 +11,14 @@ using namespace T6;
|
||||
|
||||
namespace localize
|
||||
{
|
||||
void DumperT6::DumpPool(AssetDumpingContext& context, AssetPool<LocalizeEntry>* pool)
|
||||
size_t DumperT6::GetProgressTotalCount(const AssetPool<T6::LocalizeEntry>& pool) const
|
||||
{
|
||||
if (pool->m_asset_lookup.empty())
|
||||
return pool.m_asset_lookup.empty() ? 0uz : 1uz;
|
||||
}
|
||||
|
||||
void DumperT6::DumpPool(AssetDumpingContext& context, const AssetPool<LocalizeEntry>& pool)
|
||||
{
|
||||
if (pool.m_asset_lookup.empty())
|
||||
return;
|
||||
|
||||
const auto language = LocalizeCommon::GetNameOfLanguage(context.m_zone.m_language);
|
||||
@@ -30,7 +35,7 @@ namespace localize
|
||||
|
||||
stringFileDumper.SetNotes("");
|
||||
|
||||
for (auto* localizeEntry : *pool)
|
||||
for (const auto* localizeEntry : pool)
|
||||
{
|
||||
stringFileDumper.WriteLocalizeEntry(localizeEntry->m_name, localizeEntry->Asset()->value);
|
||||
}
|
||||
@@ -41,5 +46,7 @@ namespace localize
|
||||
{
|
||||
con::error("Could not create string file for dumping localized strings of zone '{}'", context.m_zone.m_name);
|
||||
}
|
||||
|
||||
context.IncrementProgress();
|
||||
}
|
||||
} // namespace localize
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace localize
|
||||
class DumperT6 final : public IAssetDumper<T6::LocalizeEntry>
|
||||
{
|
||||
public:
|
||||
void DumpPool(AssetDumpingContext& context, AssetPool<T6::LocalizeEntry>* pool) override;
|
||||
[[nodiscard]] size_t GetProgressTotalCount(const AssetPool<T6::LocalizeEntry>& pool) const override;
|
||||
void DumpPool(AssetDumpingContext& context, const AssetPool<T6::LocalizeEntry>& pool) override;
|
||||
};
|
||||
} // namespace localize
|
||||
|
||||
@@ -6,14 +6,9 @@ using namespace T6;
|
||||
|
||||
namespace map_ents
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<MapEnts>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<MapEnts>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<MapEnts>* asset)
|
||||
{
|
||||
const auto* mapEnts = asset->Asset();
|
||||
const auto* mapEnts = asset.Asset();
|
||||
|
||||
const auto mapEntsFile = context.OpenAssetFile(std::format("{}.ents", mapEnts->name));
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace map_ents
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::MapEnts>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::MapEnts>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::MapEnts>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::MapEnts>& asset) override;
|
||||
};
|
||||
} // namespace map_ents
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "Weapon/WeaponDumperT6.h"
|
||||
#include "ZBarrier/ZBarrierDumperT6.h"
|
||||
|
||||
#include <functional>
|
||||
|
||||
using namespace T6;
|
||||
|
||||
bool ObjWriter::DumpZone(AssetDumpingContext& context) const
|
||||
@@ -35,17 +37,32 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const
|
||||
if (assetPools->poolName && ObjWriting::ShouldHandleAssetType(assetType)) \
|
||||
{ \
|
||||
dumperType dumper; \
|
||||
dumper.DumpPool(context, assetPools->poolName.get()); \
|
||||
totalProgress += dumper.GetProgressTotalCount(*assetPools->poolName); \
|
||||
dumpingFunctions.emplace_back( \
|
||||
[](AssetDumpingContext& funcContext, const GameAssetPoolT6* funcPools) \
|
||||
{ \
|
||||
dumperType dumper; \
|
||||
dumper.DumpPool(funcContext, *funcPools->poolName); \
|
||||
}); \
|
||||
}
|
||||
#define DUMP_ASSET_POOL_WITH_FACTORY(createDumper, poolName, assetType) \
|
||||
if (assetPools->poolName && ObjWriting::ShouldHandleAssetType(assetType)) \
|
||||
{ \
|
||||
const auto dumper = createDumper; \
|
||||
dumper->DumpPool(context, assetPools->poolName.get()); \
|
||||
auto dumper = createDumper; \
|
||||
totalProgress += dumper->GetProgressTotalCount(*assetPools->poolName); \
|
||||
dumpingFunctions.emplace_back( \
|
||||
[](AssetDumpingContext& funcContext, const GameAssetPoolT6* funcPools) \
|
||||
{ \
|
||||
auto dumper = createDumper; \
|
||||
dumper->DumpPool(funcContext, *funcPools->poolName); \
|
||||
}); \
|
||||
}
|
||||
|
||||
const auto* assetPools = dynamic_cast<GameAssetPoolT6*>(context.m_zone.m_pools.get());
|
||||
|
||||
size_t totalProgress = 0uz;
|
||||
std::vector<std::function<void(AssetDumpingContext & context, const GameAssetPoolT6*)>> dumpingFunctions;
|
||||
|
||||
DUMP_ASSET_POOL(phys_preset::InfoStringDumperT6, m_phys_preset, ASSET_TYPE_PHYSPRESET)
|
||||
DUMP_ASSET_POOL(phys_constraints::InfoStringDumperT6, m_phys_constraints, ASSET_TYPE_PHYSCONSTRAINTS)
|
||||
// DUMP_ASSET_POOL(AssetDumperDestructibleDef, m_destructible_def, ASSET_TYPE_DESTRUCTIBLEDEF)
|
||||
@@ -95,6 +112,10 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const
|
||||
// DUMP_ASSET_POOL(AssetDumperFootstepFXTableDef, m_footstep_fx_table, ASSET_TYPE_FOOTSTEPFX_TABLE)
|
||||
DUMP_ASSET_POOL(z_barrier::DumperT6, m_zbarrier, ASSET_TYPE_ZBARRIER)
|
||||
|
||||
context.SetTotalProgress(totalProgress);
|
||||
for (const auto& func : dumpingFunctions)
|
||||
func(context, assetPools);
|
||||
|
||||
return true;
|
||||
|
||||
#undef DUMP_ASSET_POOL
|
||||
|
||||
@@ -39,20 +39,20 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<PhysConstraints>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<PhysConstraints>& asset)
|
||||
{
|
||||
assert(asset->Asset()->count <= 4);
|
||||
assert(asset.Asset()->count <= 4);
|
||||
|
||||
InfoStringFromPhysConstraintsConverter converter(asset->Asset(),
|
||||
InfoStringFromPhysConstraintsConverter converter(asset.Asset(),
|
||||
phys_constraints_fields,
|
||||
std::extent_v<decltype(phys_constraints_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -61,24 +61,19 @@ namespace
|
||||
|
||||
namespace phys_constraints
|
||||
{
|
||||
bool InfoStringDumperT6::ShouldDump(XAssetInfo<PhysConstraints>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void InfoStringDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<PhysConstraints>* asset)
|
||||
void InfoStringDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<PhysConstraints>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_PHYS_CONSTRAINTS);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_PHYS_CONSTRAINTS);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_PHYS_CONSTRAINTS, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace phys_constraints
|
||||
class InfoStringDumperT6 final : public AbstractAssetDumper<T6::PhysConstraints>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::PhysConstraints>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::PhysConstraints>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::PhysConstraints>& asset) override;
|
||||
};
|
||||
} // namespace phys_constraints
|
||||
|
||||
@@ -59,21 +59,21 @@ namespace
|
||||
physPresetInfo->buoyancyBoxMax = physPreset->buoyancyBoxMax;
|
||||
}
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<PhysPreset>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<PhysPreset>& asset)
|
||||
{
|
||||
auto* physPresetInfo = new PhysPresetInfo;
|
||||
CopyToPhysPresetInfo(asset->Asset(), physPresetInfo);
|
||||
CopyToPhysPresetInfo(asset.Asset(), physPresetInfo);
|
||||
|
||||
InfoStringFromPhysPresetConverter converter(physPresetInfo,
|
||||
phys_preset_fields,
|
||||
std::extent_v<decltype(phys_preset_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -82,24 +82,19 @@ namespace
|
||||
|
||||
namespace phys_preset
|
||||
{
|
||||
bool InfoStringDumperT6::ShouldDump(XAssetInfo<PhysPreset>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void InfoStringDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<PhysPreset>* asset)
|
||||
void InfoStringDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<PhysPreset>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_PHYS_PRESET);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_PHYS_PRESET);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_PHYS_PRESET, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace phys_preset
|
||||
class InfoStringDumperT6 final : public AbstractAssetDumper<T6::PhysPreset>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::PhysPreset>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::PhysPreset>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::PhysPreset>& asset) override;
|
||||
};
|
||||
} // namespace phys_preset
|
||||
|
||||
@@ -4,15 +4,10 @@ using namespace T6;
|
||||
|
||||
namespace qdb
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<Qdb>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<Qdb>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<Qdb>* asset)
|
||||
{
|
||||
const auto* qdb = asset->Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto* qdb = asset.Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace qdb
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::Qdb>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::Qdb>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::Qdb>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::Qdb>& asset) override;
|
||||
};
|
||||
} // namespace qdb
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace
|
||||
{
|
||||
constexpr size_t ANIMTREE_MAX_SIZE = 0xC000000;
|
||||
|
||||
void DumpAnimtree(AssetDumpingContext& context, XAssetInfo<RawFile>* asset, std::ostream& stream)
|
||||
void DumpAnimtree(AssetDumpingContext& context, const XAssetInfo<RawFile>& asset, std::ostream& stream)
|
||||
{
|
||||
const auto* rawFile = asset->Asset();
|
||||
const auto* rawFile = asset.Asset();
|
||||
|
||||
if (rawFile->len <= 4)
|
||||
{
|
||||
@@ -77,15 +77,10 @@ namespace
|
||||
|
||||
namespace raw_file
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<RawFile>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<RawFile>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<RawFile>* asset)
|
||||
{
|
||||
const auto* rawFile = asset->Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto* rawFile = asset.Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace raw_file
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::RawFile>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::RawFile>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::RawFile>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::RawFile>& asset) override;
|
||||
};
|
||||
} // namespace raw_file
|
||||
|
||||
@@ -4,15 +4,10 @@ using namespace T6;
|
||||
|
||||
namespace script
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<ScriptParseTree>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<ScriptParseTree>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<ScriptParseTree>* asset)
|
||||
{
|
||||
const auto* scriptParseTree = asset->Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto* scriptParseTree = asset.Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace script
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::ScriptParseTree>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::ScriptParseTree>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::ScriptParseTree>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::ScriptParseTree>& asset) override;
|
||||
};
|
||||
} // namespace script
|
||||
|
||||
@@ -4,15 +4,10 @@ using namespace T6;
|
||||
|
||||
namespace slug
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<Slug>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<Slug>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<Slug>* asset)
|
||||
{
|
||||
const auto* slug = asset->Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto* slug = asset.Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace slug
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::Slug>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::Slug>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::Slug>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::Slug>& asset) override;
|
||||
};
|
||||
} // namespace slug
|
||||
|
||||
@@ -914,16 +914,23 @@ namespace
|
||||
|
||||
namespace sound
|
||||
{
|
||||
void SndBankDumperT6::DumpPool(AssetDumpingContext& context, AssetPool<SndBank>* pool)
|
||||
size_t SndBankDumperT6::GetProgressTotalCount(const AssetPool<SndBank>& pool) const
|
||||
{
|
||||
return pool.m_asset_lookup.size();
|
||||
}
|
||||
|
||||
void SndBankDumperT6::DumpPool(AssetDumpingContext& context, const AssetPool<SndBank>& pool)
|
||||
{
|
||||
LoadedSoundBankHashes soundBankHashes;
|
||||
soundBankHashes.Initialize();
|
||||
for (const auto* assetInfo : *pool)
|
||||
for (const auto* assetInfo : pool)
|
||||
{
|
||||
if (!assetInfo->m_name.empty() && assetInfo->m_name[0] == ',')
|
||||
continue;
|
||||
|
||||
DumpSndBank(context, soundBankHashes, *assetInfo);
|
||||
|
||||
context.IncrementProgress();
|
||||
}
|
||||
}
|
||||
} // namespace sound
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace sound
|
||||
class SndBankDumperT6 final : public IAssetDumper<T6::SndBank>
|
||||
{
|
||||
public:
|
||||
void DumpPool(AssetDumpingContext& context, AssetPool<T6::SndBank>* pool) override;
|
||||
[[nodiscard]] size_t GetProgressTotalCount(const AssetPool<T6::SndBank>& pool) const override;
|
||||
void DumpPool(AssetDumpingContext& context, const AssetPool<T6::SndBank>& pool) override;
|
||||
};
|
||||
} // namespace sound
|
||||
|
||||
@@ -108,9 +108,9 @@ namespace
|
||||
{
|
||||
}
|
||||
|
||||
void DumpPool(AssetPool<SndDriverGlobals>* pool)
|
||||
void DumpPool(const AssetPool<SndDriverGlobals>& pool)
|
||||
{
|
||||
for (const auto* assetInfo : *pool)
|
||||
for (const auto* assetInfo : pool)
|
||||
{
|
||||
if (!assetInfo->m_name.empty() && assetInfo->m_name[0] == ',')
|
||||
continue;
|
||||
@@ -385,9 +385,16 @@ namespace
|
||||
|
||||
namespace sound
|
||||
{
|
||||
void SndDriverGlobalsDumperT6::DumpPool(AssetDumpingContext& context, AssetPool<SndDriverGlobals>* pool)
|
||||
size_t SndDriverGlobalsDumperT6::GetProgressTotalCount(const AssetPool<T6::SndDriverGlobals>& pool) const
|
||||
{
|
||||
return pool.m_asset_lookup.empty() ? 0uz : 1uz;
|
||||
}
|
||||
|
||||
void SndDriverGlobalsDumperT6::DumpPool(AssetDumpingContext& context, const AssetPool<SndDriverGlobals>& pool)
|
||||
{
|
||||
Internal internal(context);
|
||||
internal.DumpPool(pool);
|
||||
|
||||
context.IncrementProgress();
|
||||
}
|
||||
} // namespace sound
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace sound
|
||||
class SndDriverGlobalsDumperT6 final : public IAssetDumper<T6::SndDriverGlobals>
|
||||
{
|
||||
public:
|
||||
void DumpPool(AssetDumpingContext& context, AssetPool<T6::SndDriverGlobals>* pool) override;
|
||||
[[nodiscard]] size_t GetProgressTotalCount(const AssetPool<T6::SndDriverGlobals>& pool) const override;
|
||||
void DumpPool(AssetDumpingContext& context, const AssetPool<T6::SndDriverGlobals>& pool) override;
|
||||
};
|
||||
} // namespace sound
|
||||
|
||||
@@ -6,15 +6,10 @@ using namespace T6;
|
||||
|
||||
namespace string_table
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<StringTable>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<StringTable>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<StringTable>* asset)
|
||||
{
|
||||
const auto* stringTable = asset->Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset->m_name);
|
||||
const auto* stringTable = asset.Asset();
|
||||
const auto assetFile = context.OpenAssetFile(asset.m_name);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace string_table
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::StringTable>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::StringTable>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::StringTable>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::StringTable>& asset) override;
|
||||
};
|
||||
} // namespace string_table
|
||||
|
||||
@@ -77,14 +77,9 @@ namespace
|
||||
|
||||
namespace techset
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<MaterialTechniqueSet>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<MaterialTechniqueSet>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<MaterialTechniqueSet>* asset)
|
||||
{
|
||||
const auto* techniqueSet = asset->Asset();
|
||||
const auto* techniqueSet = asset.Asset();
|
||||
auto* shaderState = context.GetZoneAssetDumperState<ShaderZoneState>();
|
||||
|
||||
for (const auto* technique : techniqueSet->techniques)
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace techset
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::MaterialTechniqueSet>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::MaterialTechniqueSet>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::MaterialTechniqueSet>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::MaterialTechniqueSet>& asset) override;
|
||||
};
|
||||
} // namespace techset
|
||||
|
||||
@@ -40,18 +40,18 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<TracerDef>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<TracerDef>& asset)
|
||||
{
|
||||
InfoStringFromTracerConverter converter(asset->Asset(),
|
||||
InfoStringFromTracerConverter converter(asset.Asset(),
|
||||
tracer_fields,
|
||||
std::extent_v<decltype(tracer_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -60,24 +60,19 @@ namespace
|
||||
|
||||
namespace tracer
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<TracerDef>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<TracerDef>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<TracerDef>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_TRACER);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_TRACER);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_TRACER, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace tracer
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::TracerDef>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::TracerDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::TracerDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::TracerDef>& asset) override;
|
||||
};
|
||||
} // namespace tracer
|
||||
|
||||
@@ -91,18 +91,18 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<VehicleDef>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<VehicleDef>& asset)
|
||||
{
|
||||
InfoStringFromVehicleConverter converter(asset->Asset(),
|
||||
InfoStringFromVehicleConverter converter(asset.Asset(),
|
||||
vehicle_fields,
|
||||
std::extent_v<decltype(vehicle_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -111,24 +111,19 @@ namespace
|
||||
|
||||
namespace vehicle
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<VehicleDef>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<VehicleDef>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<VehicleDef>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_VEHICLE);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_VEHICLE);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_VEHICLE, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace vehicle
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::VehicleDef>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::VehicleDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::VehicleDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::VehicleDef>& asset) override;
|
||||
};
|
||||
} // namespace vehicle
|
||||
|
||||
@@ -47,18 +47,18 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<WeaponAttachment>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<WeaponAttachment>& asset)
|
||||
{
|
||||
InfoStringFromAttachmentConverter converter(asset->Asset(),
|
||||
InfoStringFromAttachmentConverter converter(asset.Asset(),
|
||||
attachment_fields,
|
||||
std::extent_v<decltype(attachment_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -67,24 +67,19 @@ namespace
|
||||
|
||||
namespace attachment
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<WeaponAttachment>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<WeaponAttachment>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<WeaponAttachment>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_WEAPON_ATTACHMENT);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_WEAPON_ATTACHMENT);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_WEAPON_ATTACHMENT, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetInfoStringFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetInfoStringFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace attachment
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::WeaponAttachment>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::WeaponAttachment>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::WeaponAttachment>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::WeaponAttachment>& asset) override;
|
||||
};
|
||||
} // namespace attachment
|
||||
|
||||
@@ -107,22 +107,22 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<WeaponAttachmentUnique>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<WeaponAttachmentUnique>& asset)
|
||||
{
|
||||
const auto fullDef = std::make_unique<WeaponAttachmentUniqueFull>();
|
||||
memset(fullDef.get(), 0, sizeof(WeaponAttachmentUniqueFull));
|
||||
CopyToFullDef(asset->Asset(), fullDef.get());
|
||||
CopyToFullDef(asset.Asset(), fullDef.get());
|
||||
|
||||
InfoStringFromWeaponAttachmentUniqueConverter converter(fullDef.get(),
|
||||
attachment_unique_fields,
|
||||
std::extent_v<decltype(attachment_unique_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -131,24 +131,19 @@ namespace
|
||||
|
||||
namespace attachment_unique
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<WeaponAttachmentUnique>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<WeaponAttachmentUnique>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<WeaponAttachmentUnique>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_WEAPON_ATTACHMENT_UNIQUE);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_WEAPON_ATTACHMENT_UNIQUE);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_WEAPON_ATTACHMENT_UNIQUE, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace attachment_unique
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::WeaponAttachmentUnique>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::WeaponAttachmentUnique>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::WeaponAttachmentUnique>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::WeaponAttachmentUnique>& asset) override;
|
||||
};
|
||||
} // namespace attachment_unique
|
||||
|
||||
@@ -104,20 +104,15 @@ namespace
|
||||
|
||||
namespace camo
|
||||
{
|
||||
bool JsonDumperT6::ShouldDump(XAssetInfo<WeaponCamo>* asset)
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<WeaponCamo>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void JsonDumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<WeaponCamo>* asset)
|
||||
{
|
||||
const auto fileName = GetJsonFileNameForAssetName(asset->m_name);
|
||||
const auto fileName = GetJsonFileNameForAssetName(asset.m_name);
|
||||
const auto assetFile = context.OpenAssetFile(fileName);
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
const JsonDumperImpl dumper(*assetFile);
|
||||
dumper.Dump(asset->Asset());
|
||||
dumper.Dump(asset.Asset());
|
||||
}
|
||||
} // namespace camo
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace camo
|
||||
class JsonDumperT6 final : public AbstractAssetDumper<T6::WeaponCamo>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::WeaponCamo>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::WeaponCamo>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::WeaponCamo>& asset) override;
|
||||
};
|
||||
} // namespace camo
|
||||
|
||||
@@ -409,31 +409,31 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<WeaponVariantDef>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<WeaponVariantDef>& asset)
|
||||
{
|
||||
const auto fullDef = std::make_unique<WeaponFullDef>();
|
||||
memset(fullDef.get(), 0, sizeof(WeaponFullDef));
|
||||
CopyToFullDef(asset->Asset(), fullDef.get());
|
||||
CopyToFullDef(asset.Asset(), fullDef.get());
|
||||
|
||||
InfoStringFromWeaponConverter converter(fullDef.get(),
|
||||
weapon_fields,
|
||||
std::extent_v<decltype(weapon_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
}
|
||||
|
||||
void DumpAccuracyGraphs(AssetDumpingContext& context, XAssetInfo<WeaponVariantDef>* asset)
|
||||
void DumpAccuracyGraphs(AssetDumpingContext& context, const XAssetInfo<WeaponVariantDef>& asset)
|
||||
{
|
||||
auto* accuracyGraphWriter = context.GetZoneAssetDumperState<AccuracyGraphWriter>();
|
||||
const auto weapon = asset->Asset();
|
||||
const auto weapon = asset.Asset();
|
||||
const auto* weapDef = weapon->weapDef;
|
||||
|
||||
if (!weapDef)
|
||||
@@ -461,24 +461,19 @@ namespace
|
||||
|
||||
namespace weapon
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<WeaponVariantDef>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<WeaponVariantDef>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<WeaponVariantDef>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_WEAPON);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_WEAPON);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_WEAPON, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace weapon
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::WeaponVariantDef>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::WeaponVariantDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::WeaponVariantDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::WeaponVariantDef>& asset) override;
|
||||
};
|
||||
} // namespace weapon
|
||||
|
||||
@@ -30,18 +30,18 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
InfoString CreateInfoString(XAssetInfo<ZBarrierDef>* asset)
|
||||
InfoString CreateInfoString(const XAssetInfo<ZBarrierDef>& asset)
|
||||
{
|
||||
InfoStringFromZBarrierConverter converter(asset->Asset(),
|
||||
InfoStringFromZBarrierConverter converter(asset.Asset(),
|
||||
zbarrier_fields,
|
||||
std::extent_v<decltype(zbarrier_fields)>,
|
||||
[asset](const scr_string_t scrStr) -> std::string
|
||||
{
|
||||
assert(scrStr < asset->m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset->m_zone->m_script_strings.Count())
|
||||
assert(scrStr < asset.m_zone->m_script_strings.Count());
|
||||
if (scrStr >= asset.m_zone->m_script_strings.Count())
|
||||
return "";
|
||||
|
||||
return asset->m_zone->m_script_strings[scrStr];
|
||||
return asset.m_zone->m_script_strings[scrStr];
|
||||
});
|
||||
|
||||
return converter.Convert();
|
||||
@@ -50,24 +50,19 @@ namespace
|
||||
|
||||
namespace z_barrier
|
||||
{
|
||||
bool DumperT6::ShouldDump(XAssetInfo<ZBarrierDef>* asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, XAssetInfo<ZBarrierDef>* asset)
|
||||
void DumperT6::DumpAsset(AssetDumpingContext& context, const XAssetInfo<ZBarrierDef>& asset)
|
||||
{
|
||||
// Only dump raw when no gdt available
|
||||
if (context.m_gdt)
|
||||
{
|
||||
const auto infoString = CreateInfoString(asset);
|
||||
GdtEntry gdtEntry(asset->m_name, ObjConstants::GDF_FILENAME_ZBARRIER);
|
||||
GdtEntry gdtEntry(asset.m_name, ObjConstants::GDF_FILENAME_ZBARRIER);
|
||||
infoString.ToGdtProperties(ObjConstants::INFO_STRING_PREFIX_ZBARRIER, gdtEntry);
|
||||
context.m_gdt->WriteEntry(gdtEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset->m_name));
|
||||
const auto assetFile = context.OpenAssetFile(GetFileNameForAssetName(asset.m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace z_barrier
|
||||
class DumperT6 final : public AbstractAssetDumper<T6::ZBarrierDef>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T6::ZBarrierDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T6::ZBarrierDef>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T6::ZBarrierDef>& asset) override;
|
||||
};
|
||||
} // namespace z_barrier
|
||||
|
||||
Reference in New Issue
Block a user