refactor: add AssetMarker headers to zcg marker template

This commit is contained in:
Jan Laupetin committed 2026-01-05 17:43:56 +00:00
1 parent 660f34df69
commit e7f126265d
15 files changed
+141 -265

No files matched your search

@@ -12,23 +12,50 @@ namespace
{
constexpr int TAG_HEADER = 1;
constexpr int TAG_SOURCE = 2;
constexpr int TAG_ALL_MARKERS = 3;
class Template final : BaseTemplate
class PerTemplate final : BaseTemplate
{
public:
Template(std::ostream& stream, const OncePerAssetRenderingContext& context)
: BaseTemplate(stream, context)
PerTemplate(std::ostream& stream, const OncePerTemplateRenderingContext& context)
: BaseTemplate(stream),
m_env(context)
{
}
void AllMarkers() const
{
AddGeneratedHint();
LINE("#pragma once")
LINE("")
for (const auto* asset : m_env.m_assets)
{
auto lowerAssetName = asset->m_definition->m_name;
utils::MakeStringLowerCase(lowerAssetName);
LINEF("#include \"Game/{0}/XAssets/{1}/{1}_mark_db.h\"", m_env.m_game, lowerAssetName)
}
}
private:
const OncePerTemplateRenderingContext& m_env;
};
class PerAsset final : BaseTemplate
{
public:
PerAsset(std::ostream& stream, const OncePerAssetRenderingContext& context)
: BaseTemplate(stream),
m_env(context)
{
}
void Header()
{
LINE("// ====================================================================")
LINE("// This file has been generated by ZoneCodeGenerator.")
LINE("// Do not modify.")
LINE("// Any changes will be discarded when regenerating.")
LINE("// ====================================================================")
LINE("")
AddGeneratedHint();
LINE("#pragma once")
LINE("")
LINEF("#include \"Game/{0}/{0}.h\"", m_env.m_game)
@@ -113,12 +140,8 @@ namespace
void Source()
{
LINE("// ====================================================================")
LINE("// This file has been generated by ZoneCodeGenerator.")
LINE("// Do not modify.")
LINE("// Any changes will be discarded when regenerating.")
LINE("// ====================================================================")
LINE("")
AddGeneratedHint();
LINEF("#include \"{0}_mark_db.h\"", Lower(m_env.m_asset->m_definition->m_name))
if (!m_env.m_referenced_assets.empty())
@@ -761,9 +784,28 @@ namespace
m_intendation--;
LINE("}")
}
const OncePerAssetRenderingContext& m_env;
};
} // namespace
std::vector<CodeTemplateFile> ZoneMarkTemplate::GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context)
{
std::vector<CodeTemplateFile> files;
files.emplace_back(std::format("AssetMarker{0}.h", context.m_game), TAG_ALL_MARKERS);
return files;
}
void ZoneMarkTemplate::RenderOncePerTemplateFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context)
{
assert(fileTag == TAG_ALL_MARKERS);
PerTemplate t(stream, context);
t.AllMarkers();
}
std::vector<CodeTemplateFile> ZoneMarkTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context)
{
std::vector<CodeTemplateFile> files;
@@ -771,15 +813,15 @@ std::vector<CodeTemplateFile> ZoneMarkTemplate::GetFilesToRenderOncePerAsset(con
auto assetName = context.m_asset->m_definition->m_name;
utils::MakeStringLowerCase(assetName);
files.emplace_back(std::format("{0}/{0}_mark_db.h", assetName), TAG_HEADER);
files.emplace_back(std::format("{0}/{0}_mark_db.cpp", assetName), TAG_SOURCE);
files.emplace_back(std::format("XAssets/{0}/{0}_mark_db.h", assetName), TAG_HEADER);
files.emplace_back(std::format("XAssets/{0}/{0}_mark_db.cpp", assetName), TAG_SOURCE);
return files;
}
void ZoneMarkTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context)
{
Template t(stream, context);
PerAsset t(stream, context);
if (fileTag == TAG_HEADER)
{