refactor: generate combined asset loader/writer/marker headers per variant

This commit is contained in:
Jan Laupetin committed 2026-10-22 20:01:05 +02:00
1 parent 884fefd1db
commit 8490c09fad
49 files changed
+408 -368

No files matched your search

@@ -1,6 +1,7 @@
#include "ZoneWriteTemplate.h"
#include "Domain/Computations/StructureComputations.h"
#include "Internal/BasePerVariantTemplate.h"
#include "Internal/BaseTemplate.h"
#include "Utils/StringUtils.h"
@@ -14,11 +15,11 @@ namespace
constexpr CodeTemplateFileTag TAG_SOURCE = 2;
constexpr CodeTemplateFileTag TAG_ALL_WRITERS = 3;
class PerTemplate final : BaseTemplate
class PerVariant final : BasePerVariantTemplate
{
public:
PerTemplate(std::ostream& stream, const OncePerTemplateRenderingContext& context)
: BaseTemplate(stream, context),
PerVariant(std::ostream& stream, const PerVariantRenderingContext& context)
: BasePerVariantTemplate(stream, context),
m_env(context)
{
}
@@ -30,7 +31,7 @@ namespace
LINE("#pragma once")
LINE("")
for (const auto* asset : m_env.m_assets)
for (const auto* asset : m_env.m_all_assets)
{
LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_write_db.h\"",
m_env.m_game,
@@ -41,14 +42,14 @@ namespace
}
private:
const OncePerTemplateRenderingContext& m_env;
const PerVariantRenderingContext& m_env;
};
class PerAsset final : BaseTemplate
class PerAsset final : BasePerVariantTemplate
{
public:
PerAsset(std::ostream& stream, const OncePerAssetRenderingContext& context)
: BaseTemplate(stream, context),
PerAsset(std::ostream& stream, const PerAssetRenderingContext& context)
: BasePerVariantTemplate(stream, context),
m_env(context)
{
}
@@ -1639,28 +1640,28 @@ namespace
LINE("}")
}
const OncePerAssetRenderingContext& m_env;
const PerAssetRenderingContext& m_env;
};
} // namespace
std::vector<CodeTemplateFile> ZoneWriteTemplate::GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context)
std::vector<CodeTemplateFile> ZoneWriteTemplate::GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context)
{
std::vector<CodeTemplateFile> files;
files.emplace_back(std::format("AssetWriter{0}.h", context.m_game), TAG_ALL_WRITERS);
files.emplace_back(std::format("AssetWriter{0}_{1}.h", context.m_game, context.m_variant->m_name), TAG_ALL_WRITERS);
return files;
}
void ZoneWriteTemplate::RenderOncePerTemplateFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context)
void ZoneWriteTemplate::RenderOncePerVariantFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context)
{
assert(fileTag == TAG_ALL_WRITERS);
const PerTemplate t(stream, context);
const PerVariant t(stream, context);
t.AllWriters();
}
std::vector<CodeTemplateFile> ZoneWriteTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context)
std::vector<CodeTemplateFile> ZoneWriteTemplate::GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context)
{
std::vector<CodeTemplateFile> files;
@@ -1679,7 +1680,7 @@ std::vector<CodeTemplateFile> ZoneWriteTemplate::GetFilesToRenderOncePerAsset(co
return files;
}
void ZoneWriteTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context)
void ZoneWriteTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context)
{
PerAsset t(stream, context);