mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-01-11 19:21:50 +00:00
feat: report on unlinking progress
This commit is contained in:
@@ -76,19 +76,14 @@ namespace image
|
||||
}
|
||||
}
|
||||
|
||||
bool DumperT5::ShouldDump(XAssetInfo<GfxImage>* asset)
|
||||
void DumperT5::DumpAsset(AssetDumpingContext& context, const XAssetInfo<GfxImage>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT5::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
|
||||
DumperT5();
|
||||
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T5::GfxImage>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T5::GfxImage>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T5::GfxImage>& asset) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<IImageWriter> m_writer;
|
||||
|
||||
@@ -11,9 +11,14 @@ using namespace T5;
|
||||
|
||||
namespace localize
|
||||
{
|
||||
void DumperT5::DumpPool(AssetDumpingContext& context, AssetPool<LocalizeEntry>* pool)
|
||||
size_t DumperT5::GetProgressTotalCount(const AssetPool<T5::LocalizeEntry>& pool) const
|
||||
{
|
||||
if (pool->m_asset_lookup.empty())
|
||||
return pool.m_asset_lookup.empty() ? 0uz : 1uz;
|
||||
}
|
||||
|
||||
void DumperT5::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 DumperT5 final : public IAssetDumper<T5::LocalizeEntry>
|
||||
{
|
||||
public:
|
||||
void DumpPool(AssetDumpingContext& context, AssetPool<T5::LocalizeEntry>* pool) override;
|
||||
[[nodiscard]] size_t GetProgressTotalCount(const AssetPool<T5::LocalizeEntry>& pool) const override;
|
||||
void DumpPool(AssetDumpingContext& context, const AssetPool<T5::LocalizeEntry>& pool) override;
|
||||
};
|
||||
} // namespace localize
|
||||
|
||||
@@ -17,11 +17,20 @@ 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 GameAssetPoolT5* funcPools) \
|
||||
{ \
|
||||
dumperType dumper; \
|
||||
dumper.DumpPool(funcContext, *funcPools->poolName); \
|
||||
}); \
|
||||
}
|
||||
|
||||
const auto* assetPools = dynamic_cast<GameAssetPoolT5*>(context.m_zone.m_pools.get());
|
||||
|
||||
size_t totalProgress = 0uz;
|
||||
std::vector<std::function<void(AssetDumpingContext & context, const GameAssetPoolT5*)>> dumpingFunctions;
|
||||
|
||||
// DUMP_ASSET_POOL(AssetDumperPhysPreset, m_phys_preset, ASSET_TYPE_PHYSPRESET)
|
||||
// DUMP_ASSET_POOL(AssetDumperPhysConstraints, m_phys_constraints, ASSET_TYPE_PHYSCONSTRAINTS)
|
||||
// DUMP_ASSET_POOL(AssetDumperDestructibleDef, m_destructible_def, ASSET_TYPE_DESTRUCTIBLEDEF)
|
||||
@@ -55,6 +64,10 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const
|
||||
// DUMP_ASSET_POOL(AssetDumperGlasses, m_glasses, ASSET_TYPE_GLASSES)
|
||||
// DUMP_ASSET_POOL(AssetDumperEmblemSet, m_emblem_set, ASSET_TYPE_EMBLEMSET)
|
||||
|
||||
context.SetTotalProgress(totalProgress);
|
||||
for (const auto& func : dumpingFunctions)
|
||||
func(context, assetPools);
|
||||
|
||||
return true;
|
||||
|
||||
#undef DUMP_ASSET_POOL
|
||||
|
||||
@@ -15,9 +15,9 @@ namespace
|
||||
{
|
||||
constexpr static size_t GSC_MAX_SIZE = 0xC000000;
|
||||
|
||||
void DumpGsc(AssetDumpingContext& context, XAssetInfo<RawFile>* asset, std::ostream& stream)
|
||||
void DumpGsc(AssetDumpingContext& context, const XAssetInfo<RawFile>& asset, std::ostream& stream)
|
||||
{
|
||||
const auto* rawFile = asset->Asset();
|
||||
const auto* rawFile = asset.Asset();
|
||||
|
||||
if (rawFile->len <= 8)
|
||||
{
|
||||
@@ -96,15 +96,10 @@ namespace
|
||||
|
||||
namespace raw_file
|
||||
{
|
||||
bool DumperT5::ShouldDump(XAssetInfo<RawFile>* asset)
|
||||
void DumperT5::DumpAsset(AssetDumpingContext& context, const XAssetInfo<RawFile>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT5::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 DumperT5 final : public AbstractAssetDumper<T5::RawFile>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T5::RawFile>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T5::RawFile>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T5::RawFile>& asset) override;
|
||||
};
|
||||
} // namespace raw_file
|
||||
|
||||
@@ -6,15 +6,10 @@ using namespace T5;
|
||||
|
||||
namespace string_table
|
||||
{
|
||||
bool DumperT5::ShouldDump(XAssetInfo<StringTable>* asset)
|
||||
void DumperT5::DumpAsset(AssetDumpingContext& context, const XAssetInfo<StringTable>& asset)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void DumperT5::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 DumperT5 final : public AbstractAssetDumper<T5::StringTable>
|
||||
{
|
||||
protected:
|
||||
bool ShouldDump(XAssetInfo<T5::StringTable>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, XAssetInfo<T5::StringTable>* asset) override;
|
||||
void DumpAsset(AssetDumpingContext& context, const XAssetInfo<T5::StringTable>& asset) override;
|
||||
};
|
||||
} // namespace string_table
|
||||
|
||||
Reference in New Issue
Block a user