Dump StructuredDataDef enums

This commit is contained in:
Jan
2022-01-15 19:23:18 +01:00
parent 5c2f7de87d
commit 02769fe21d
4 changed files with 157 additions and 4 deletions

View File

@ -1,5 +1,8 @@
#include "AssetDumperStructuredDataDefSet.h"
#include <cassert>
#include <sstream>
#include "Dumping/StructuredDataDef/StructuredDataDefDumper.h"
using namespace IW4;
@ -9,6 +12,30 @@ bool AssetDumperStructuredDataDefSet::ShouldDump(XAssetInfo<StructuredDataDefSet
return true;
}
void AssetDumperStructuredDataDefSet::DumpEnum(StructuredDataDefDumper& dumper, const int enumIndex, const StructuredDataEnum* _enum)
{
if (!_enum->entries || _enum->entryCount <= 0)
return;
std::ostringstream ss;
ss << "ENUM_" << enumIndex;
dumper.BeginEnum(ss.str(), static_cast<size_t>(_enum->entryCount));
for(auto i = 0; i < _enum->entryCount; i++)
{
const auto& entry = _enum->entries[i];
assert(entry.string);
if(!entry.string)
continue;
dumper.WriteEnumEntry(entry.string, entry.index);
}
dumper.EndEnum();
}
void AssetDumperStructuredDataDefSet::DumpAsset(AssetDumpingContext& context, XAssetInfo<StructuredDataDefSet>* asset)
{
const auto* set = asset->Asset();
@ -25,6 +52,9 @@ void AssetDumperStructuredDataDefSet::DumpAsset(AssetDumpingContext& context, XA
dumper.BeginVersion(def.version);
for (auto enumIndex = 0; enumIndex < def.enumCount; enumIndex++)
DumpEnum(dumper, enumIndex, &def.enums[enumIndex]);
// TODO
dumper.EndVersion();

View File

@ -1,12 +1,15 @@
#pragma once
#include "Dumping/AbstractAssetDumper.h"
#include "Dumping/StructuredDataDef/StructuredDataDefDumper.h"
#include "Game/IW4/IW4.h"
namespace IW4
{
class AssetDumperStructuredDataDefSet final : public AbstractAssetDumper<StructuredDataDefSet>
{
static void DumpEnum(StructuredDataDefDumper& dumper, int enumIndex, const StructuredDataEnum* _enum);
protected:
bool ShouldDump(XAssetInfo<StructuredDataDefSet>* asset) override;
void DumpAsset(AssetDumpingContext& context, XAssetInfo<StructuredDataDefSet>* asset) override;