mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-11 07:18:11 -05:00
Dump StructuredDataDef enums
This commit is contained in:
@ -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();
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user