diff --git a/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp b/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp index c68726ac..a0e64af7 100644 --- a/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp +++ b/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderIW3.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/IW3/AssetMarkerIW3.h" +#include "Game/IW3/AssetMarkerIW3_pc.h" #include "Game/IW3/Font/FontLoaderIW3.h" #include "Game/IW3/GameIW3.h" #include "Game/IW3/IW3.h" diff --git a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp index 11629bcf..a33a46da 100644 --- a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp +++ b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderIW4.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/IW4/AssetMarkerIW4.h" +#include "Game/IW4/AssetMarkerIW4_pc32.h" #include "Game/IW4/Font/FontLoaderIW4.h" #include "Game/IW4/GameIW4.h" #include "Game/IW4/IW4.h" diff --git a/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp b/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp index ac083c78..47b1723a 100644 --- a/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp +++ b/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderIW5.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/IW5/AssetMarkerIW5.h" +#include "Game/IW5/AssetMarkerIW5_pc32.h" #include "Game/IW5/Font/FontLoaderIW5.h" #include "Game/IW5/GameIW5.h" #include "Game/IW5/IW5.h" diff --git a/src/ObjLoading/Game/QOS/ObjLoaderQOS.cpp b/src/ObjLoading/Game/QOS/ObjLoaderQOS.cpp index c47ff7e3..9e026b08 100644 --- a/src/ObjLoading/Game/QOS/ObjLoaderQOS.cpp +++ b/src/ObjLoading/Game/QOS/ObjLoaderQOS.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderQOS.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/QOS/AssetMarkerQOS.h" +#include "Game/QOS/AssetMarkerQOS_pc.h" #include "Game/QOS/QOS.h" #include "Localize/AssetLoaderLocalizeQOS.h" #include "RawFile/AssetLoaderRawFileQOS.h" diff --git a/src/ObjLoading/Game/T4/ObjLoaderT4.cpp b/src/ObjLoading/Game/T4/ObjLoaderT4.cpp index ea42584d..92474297 100644 --- a/src/ObjLoading/Game/T4/ObjLoaderT4.cpp +++ b/src/ObjLoading/Game/T4/ObjLoaderT4.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderT4.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/T4/AssetMarkerT4.h" +#include "Game/T4/AssetMarkerT4_pc.h" #include "Game/T4/Font/FontLoaderT4.h" #include "Game/T4/Image/ImageLoaderEmbeddedT4.h" #include "Game/T4/Image/ImageLoaderExternalT4.h" diff --git a/src/ObjLoading/Game/T5/ObjLoaderT5.cpp b/src/ObjLoading/Game/T5/ObjLoaderT5.cpp index 2b4d66b3..80c8c266 100644 --- a/src/ObjLoading/Game/T5/ObjLoaderT5.cpp +++ b/src/ObjLoading/Game/T5/ObjLoaderT5.cpp @@ -1,7 +1,7 @@ #include "ObjLoaderT5.h" #include "Asset/GlobalAssetPoolsLoader.h" -#include "Game/T5/AssetMarkerT5.h" +#include "Game/T5/AssetMarkerT5_pc.h" #include "Game/T5/Font/FontLoaderT5.h" #include "Game/T5/GameT5.h" #include "Game/T5/Image/ImageLoaderEmbeddedT5.h" diff --git a/src/ObjLoading/Game/T6/ObjLoaderT6.cpp b/src/ObjLoading/Game/T6/ObjLoaderT6.cpp index 70eb451b..44d25582 100644 --- a/src/ObjLoading/Game/T6/ObjLoaderT6.cpp +++ b/src/ObjLoading/Game/T6/ObjLoaderT6.cpp @@ -3,7 +3,7 @@ #include "Asset/GlobalAssetPoolsLoader.h" #include "FontIcon/CsvLoaderFontIconT6.h" #include "FontIcon/JsonLoaderFontIconT6.h" -#include "Game/T6/AssetMarkerT6.h" +#include "Game/T6/AssetMarkerT6_pc.h" #include "Game/T6/CommonT6.h" #include "Game/T6/Font/FontLoaderT6.h" #include "Game/T6/GameT6.h" diff --git a/src/ZoneCode.lua b/src/ZoneCode.lua index 4441f61c..4fa5d916 100644 --- a/src/ZoneCode.lua +++ b/src/ZoneCode.lua @@ -306,6 +306,8 @@ function ZoneCode:allTestFiles() for i, variantName in ipairs(gameData.Variants) do local variantLower = string.lower(variantName) + + -- Per asset for j, assetName in ipairs(gameData.Assets) do local assetNameLower = string.lower(assetName) table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_struct_test.cpp") @@ -324,15 +326,17 @@ function ZoneCode:allMarkFiles() for i, variantName in ipairs(gameData.Variants) do local variantLower = string.lower(variantName) + + -- Per asset for j, assetName in ipairs(gameData.Assets) do local assetNameLower = string.lower(assetName) table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_mark_db.cpp") table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_mark_db.h") end + + -- Per variant + table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetMarker" .. game .. "_" .. variantLower .. ".h") end - - -- PerTemplate - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetMarker" .. game .. ".h") end return result @@ -346,16 +350,17 @@ function ZoneCode:allLoadFiles() for i, variantName in ipairs(gameData.Variants) do local variantLower = string.lower(variantName) - -- Per Asset/Variant + + -- Per asset for j, assetName in ipairs(gameData.Assets) do local assetNameLower = string.lower(assetName) table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_load_db.cpp") table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_load_db.h") end + + -- Per variant + table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetLoader" .. game .. "_" .. variantLower .. ".h") end - - -- PerTemplate - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetLoader" .. game .. ".h") end return result @@ -369,16 +374,17 @@ function ZoneCode:allWriteFiles() for i, variantName in ipairs(gameData.Variants) do local variantLower = string.lower(variantName) - -- Per Asset/Variant + + -- Per asset for j, assetName in ipairs(gameData.Assets) do local assetNameLower = string.lower(assetName) table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_write_db.cpp") table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_" .. variantName .. "_write_db.h") end + + -- Per variant + table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetWriter" .. game .. "_" .. variantLower .. ".h") end - - -- PerTemplate - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/AssetWriter" .. game .. ".h") end return result diff --git a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp deleted file mode 100644 index dd24b843..00000000 --- a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "BaseRenderingContext.h" - -BaseRenderingContext::BaseRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks) - : m_game(std::move(game)), - m_word_size_mismatch(variant->m_word_size != OWN_WORD_SIZE), - m_word_size(variant->m_word_size), - m_pointer_size(GetPointerSizeForWordSize(variant->m_word_size)), - m_endianness_mismatch(std::endian::native != variant->m_endianness), - m_endianness(variant->m_endianness), - m_blocks(std::move(fastFileBlocks)), - m_default_normal_block(nullptr), - m_default_temp_block(nullptr), - m_variant(variant) -{ - for (const auto* block : m_blocks) - { - if (block->m_is_default) - { - if (block->m_type == FastFileBlockType::NORMAL && m_default_normal_block == nullptr) - m_default_normal_block = block; - else if (block->m_type == FastFileBlockType::TEMP && m_default_temp_block == nullptr) - m_default_temp_block = block; - } - } -} diff --git a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h deleted file mode 100644 index 5aadbac9..00000000 --- a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Persistence/IDataRepository.h" - -#include -#include - -class BaseRenderingContext -{ -public: - std::string m_game; - bool m_word_size_mismatch; - WordSize m_word_size; - unsigned m_pointer_size; - bool m_endianness_mismatch; - std::endian m_endianness; - std::vector m_blocks; - - const FastFileBlock* m_default_normal_block; - const FastFileBlock* m_default_temp_block; - - const GameVariant* m_variant; - -protected: - BaseRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks); -}; diff --git a/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp index 45bdd7b3..83f2cc54 100644 --- a/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp @@ -15,6 +15,25 @@ namespace fs = std::filesystem; +namespace +{ + void LogDirtyCheckResult(const utils::TextFileCheckDirtyResult result, const std::string_view forWhat) + { + switch (result) + { + case utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN: + con::info("Successfully generated code for {}", forWhat); + break; + case utils::TextFileCheckDirtyResult::OUTPUT_WAS_UP_TO_DATE: + con::info("Code was up to date for {}", forWhat); + break; + case utils::TextFileCheckDirtyResult::FAILURE: + con::error("Failed to generate code for {}", forWhat); + break; + } + } +} // namespace + CodeGenerator::CodeGenerator(const ZoneCodeGeneratorArguments* args) : m_args(args) { @@ -29,7 +48,7 @@ void CodeGenerator::SetupTemplates() m_template_mapping["assetstructtests"] = std::make_unique(); } -utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerTemplate(const OncePerTemplateRenderingContext& context, ICodeTemplate* codeTemplate) const +utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerTemplate(const PerTemplateRenderingContext& context, ICodeTemplate* codeTemplate) const { bool wroteAtLeastOneFile = false; for (const auto& codeFile : codeTemplate->GetFilesToRenderOncePerTemplate(context)) @@ -60,7 +79,38 @@ utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerTemplate(const return wroteAtLeastOneFile ? utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN : utils::TextFileCheckDirtyResult::OUTPUT_WAS_UP_TO_DATE; } -utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerAsset(const OncePerAssetRenderingContext& context, ICodeTemplate* codeTemplate) const +utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerVariant(const PerVariantRenderingContext& context, ICodeTemplate* codeTemplate) const +{ + bool wroteAtLeastOneFile = false; + for (const auto& codeFile : codeTemplate->GetFilesToRenderOncePerVariant(context)) + { + fs::path outputPath(m_args->m_output_directory); + outputPath.append(codeFile.m_file_name); + + utils::TextFileCheckDirtyOutput out(outputPath); + if (!out.Open()) + { + con::error("Failed to open file '{}'", outputPath.string()); + return utils::TextFileCheckDirtyResult::FAILURE; + } + + codeTemplate->RenderOncePerVariantFile(out.Stream(), codeFile.m_tag, context); + + const auto fileResult = out.Close(); + if (fileResult == utils::TextFileCheckDirtyResult::FAILURE) + { + con::error("Failed to write file '{}'", outputPath.string()); + return utils::TextFileCheckDirtyResult::FAILURE; + } + + if (fileResult == utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN) + wroteAtLeastOneFile = true; + } + + return wroteAtLeastOneFile ? utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN : utils::TextFileCheckDirtyResult::OUTPUT_WAS_UP_TO_DATE; +} + +utils::TextFileCheckDirtyResult CodeGenerator::GenerateCodeOncePerAsset(const PerAssetRenderingContext& context, ICodeTemplate* codeTemplate) const { bool wroteAtLeastOneFile = false; for (const auto& codeFile : codeTemplate->GetFilesToRenderOncePerAsset(context)) @@ -145,39 +195,31 @@ bool CodeGenerator::GenerateCode(const IDataRepository* repository) { for (auto* asset : assets) { - auto context = OncePerAssetRenderingContext::BuildContext(repository, asset, variant); + auto context = std::make_unique(repository, asset, variant); const auto result = GenerateCodeOncePerAsset(*context, foundTemplate->second.get()); - switch (result) - { - case utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN: - con::info("Successfully generated code for asset '{}' with preset '{}'", asset->m_definition->GetFullName(), foundTemplate->first); - break; - case utils::TextFileCheckDirtyResult::OUTPUT_WAS_UP_TO_DATE: - con::info("Code was up to date for asset '{}' with preset '{}'", asset->m_definition->GetFullName(), foundTemplate->first); - break; - case utils::TextFileCheckDirtyResult::FAILURE: - con::error("Failed to generate code for asset '{}' with preset '{}'", asset->m_definition->GetFullName(), foundTemplate->first); + LogDirtyCheckResult( + result, + std::format("for asset '{}' with variant '{}' and preset '{}'", asset->m_definition->GetFullName(), variant->m_name, foundTemplate->first)); + if (result == utils::TextFileCheckDirtyResult::FAILURE) return false; - } } { - auto context = OncePerTemplateRenderingContext::BuildContext(repository, variant); - const auto result = GenerateCodeOncePerTemplate(*context, foundTemplate->second.get()); - switch (result) - { - case utils::TextFileCheckDirtyResult::OUTPUT_WRITTEN: - con::info("Successfully generated code with preset '{}'", foundTemplate->first); - break; - case utils::TextFileCheckDirtyResult::OUTPUT_WAS_UP_TO_DATE: - con::info("Code was up to date for preset '{}'", foundTemplate->first); - break; - case utils::TextFileCheckDirtyResult::FAILURE: - con::error("Failed to generate code with preset '{}'", foundTemplate->first); + auto context = std::make_unique(repository, variant); + const auto result = GenerateCodeOncePerVariant(*context, foundTemplate->second.get()); + LogDirtyCheckResult(result, std::format("for variant '{}' with preset '{}'", variant->m_name, foundTemplate->first)); + if (result == utils::TextFileCheckDirtyResult::FAILURE) return false; - } } } + + { + auto context = std::make_unique(repository); + const auto result = GenerateCodeOncePerTemplate(*context, foundTemplate->second.get()); + LogDirtyCheckResult(result, std::format("for preset '{}'", foundTemplate->first)); + if (result == utils::TextFileCheckDirtyResult::FAILURE) + return false; + } } const auto end = std::chrono::steady_clock::now(); const auto timeInMs = std::chrono::duration_cast(end - start).count(); diff --git a/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h index 8fca5eae..66106efe 100644 --- a/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h +++ b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h @@ -18,8 +18,9 @@ public: private: void SetupTemplates(); - utils::TextFileCheckDirtyResult GenerateCodeOncePerTemplate(const OncePerTemplateRenderingContext& context, ICodeTemplate* codeTemplate) const; - utils::TextFileCheckDirtyResult GenerateCodeOncePerAsset(const OncePerAssetRenderingContext& context, ICodeTemplate* codeTemplate) const; + utils::TextFileCheckDirtyResult GenerateCodeOncePerTemplate(const PerTemplateRenderingContext& context, ICodeTemplate* codeTemplate) const; + utils::TextFileCheckDirtyResult GenerateCodeOncePerVariant(const PerVariantRenderingContext& context, ICodeTemplate* codeTemplate) const; + utils::TextFileCheckDirtyResult GenerateCodeOncePerAsset(const PerAssetRenderingContext& context, ICodeTemplate* codeTemplate) const; static bool GetAssetWithName(const IDataRepository* repository, const std::string& name, StructureInformation*& asset); diff --git a/src/ZoneCodeGeneratorLib/Generating/ICodeTemplate.h b/src/ZoneCodeGeneratorLib/Generating/ICodeTemplate.h index 37be54d6..1c885a36 100644 --- a/src/ZoneCodeGeneratorLib/Generating/ICodeTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/ICodeTemplate.h @@ -1,7 +1,7 @@ #pragma once -#include "OncePerAssetRenderingContext.h" -#include "OncePerTemplateRenderingContext.h" +#include "PerAssetRenderingContext.h" +#include "PerTemplateRenderingContext.h" #include #include @@ -32,17 +32,24 @@ public: ICodeTemplate& operator=(const ICodeTemplate& other) = default; ICodeTemplate& operator=(ICodeTemplate&& other) noexcept = default; - virtual std::vector GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) + virtual std::vector GetFilesToRenderOncePerTemplate(const PerTemplateRenderingContext& context) { return {}; } - virtual void RenderOncePerTemplateFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) {} + virtual void RenderOncePerTemplateFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerTemplateRenderingContext& context) {} - virtual std::vector GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) + virtual std::vector GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) { return {}; } - virtual void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) {} + virtual void RenderOncePerVariantFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) {} + + virtual std::vector GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) + { + return {}; + } + + virtual void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) {} }; diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp deleted file mode 100644 index cc93a68d..00000000 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "OncePerTemplateRenderingContext.h" - -#include "Domain/Computations/StructureComputations.h" - -#include - -OncePerTemplateRenderingContext::OncePerTemplateRenderingContext(std::string game, - const GameVariant* variant, - std::vector fastFileBlocks, - std::vector assets) - : BaseRenderingContext(std::move(game), variant, std::move(fastFileBlocks)), - m_assets(std::move(assets)) -{ - for (const auto* block : m_blocks) - { - if (block->m_is_default) - { - if (block->m_type == FastFileBlockType::NORMAL && m_default_normal_block == nullptr) - m_default_normal_block = block; - else if (block->m_type == FastFileBlockType::TEMP && m_default_temp_block == nullptr) - m_default_temp_block = block; - } - } -} - -std::unique_ptr OncePerTemplateRenderingContext::BuildContext(const IDataRepository* repository, const GameVariant* variant) -{ - std::vector assetInformation; - for (auto* info : repository->GetAllStructureInformation()) - { - if (!StructureComputations(info).IsAsset()) - continue; - - assetInformation.emplace_back(info); - } - - return std::make_unique( - OncePerTemplateRenderingContext(repository->GetGameName(), variant, repository->GetAllFastFileBlocks(), assetInformation)); -} diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.h deleted file mode 100644 index 9ec52287..00000000 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "BaseRenderingContext.h" -#include "Persistence/IDataRepository.h" - -#include -#include - -class OncePerTemplateRenderingContext : public BaseRenderingContext -{ -public: - static std::unique_ptr BuildContext(const IDataRepository* repository, const GameVariant* variant); - - std::vector m_assets; - -private: - OncePerTemplateRenderingContext(std::string game, - const GameVariant* variant, - std::vector fastFileBlocks, - std::vector assets); -}; diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.cpp similarity index 72% rename from src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp rename to src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.cpp index a92af647..f107f1e6 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.cpp @@ -1,4 +1,4 @@ -#include "OncePerAssetRenderingContext.h" +#include "PerAssetRenderingContext.h" #include "Domain/Computations/MemberComputations.h" #include "Domain/Computations/StructureComputations.h" @@ -18,24 +18,16 @@ RenderingUsedType::RenderingUsedType(const DataDefinition* type, StructureInform { } -OncePerAssetRenderingContext::OncePerAssetRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks) - : BaseRenderingContext(std::move(game), variant, std::move(fastFileBlocks)), +PerAssetRenderingContext::PerAssetRenderingContext(const IDataRepository* repository, StructureInformation* asset, const GameVariant* variant) + : PerVariantRenderingContext(repository, variant), m_asset(nullptr), m_has_actions(false) { - for (const auto* block : m_blocks) - { - if (block->m_is_default) - { - if (block->m_type == FastFileBlockType::NORMAL && m_default_normal_block == nullptr) - m_default_normal_block = block; - else if (block->m_type == FastFileBlockType::TEMP && m_default_temp_block == nullptr) - m_default_temp_block = block; - } - } + MakeAsset(repository, asset); + CreateUsedTypeCollections(); } -RenderingUsedType* OncePerAssetRenderingContext::AddUsedType(std::unique_ptr usedType) +RenderingUsedType* PerAssetRenderingContext::AddUsedType(std::unique_ptr usedType) { auto* result = usedType.get(); m_used_types.push_back(usedType.get()); @@ -44,8 +36,7 @@ RenderingUsedType* OncePerAssetRenderingContext::AddUsedType(std::unique_ptrm_type->GetType() == DataDefinitionType::TYPEDEF) { @@ -73,7 +64,7 @@ RenderingUsedType* return nullptr; } -void OncePerAssetRenderingContext::AddMembersToContext(const IDataRepository* repository, const StructureInformation* info) +void PerAssetRenderingContext::AddMembersToContext(const IDataRepository* repository, const StructureInformation* info) { for (const auto& member : info->m_ordered_members) { @@ -117,7 +108,7 @@ void OncePerAssetRenderingContext::AddMembersToContext(const IDataRepository* re } } -void OncePerAssetRenderingContext::ScanUsedTypeIfNeeded(const IDataRepository* repository, const MemberComputations* computations, RenderingUsedType* usedType) +void PerAssetRenderingContext::ScanUsedTypeIfNeeded(const IDataRepository* repository, const MemberComputations* computations, RenderingUsedType* usedType) { if (usedType->m_info != nullptr && !StructureComputations(usedType->m_info).IsAsset() && !computations->IsInRuntimeBlock() && !usedType->m_members_loaded) { @@ -126,7 +117,7 @@ void OncePerAssetRenderingContext::ScanUsedTypeIfNeeded(const IDataRepository* r } } -void OncePerAssetRenderingContext::MakeAsset(const IDataRepository* repository, StructureInformation* asset) +void PerAssetRenderingContext::MakeAsset(const IDataRepository* repository, StructureInformation* asset) { m_asset = asset; AddUsedType(std::make_unique(asset->m_definition, asset)); @@ -134,7 +125,7 @@ void OncePerAssetRenderingContext::MakeAsset(const IDataRepository* repository, AddMembersToContext(repository, asset); } -void OncePerAssetRenderingContext::CreateUsedTypeCollections() +void PerAssetRenderingContext::CreateUsedTypeCollections() { for (auto* usedType : m_used_types) { @@ -161,7 +152,7 @@ void OncePerAssetRenderingContext::CreateUsedTypeCollections() } } -bool OncePerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* usedType) +bool PerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* usedType) { const StructureComputations computations(usedType->m_info); @@ -185,15 +176,3 @@ bool OncePerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* u return false; } - -std::unique_ptr - OncePerAssetRenderingContext::BuildContext(const IDataRepository* repository, StructureInformation* asset, const GameVariant* variant) -{ - auto context = - std::make_unique(OncePerAssetRenderingContext(repository->GetGameName(), variant, repository->GetAllFastFileBlocks())); - - context->MakeAsset(repository, asset); - context->CreateUsedTypeCollections(); - - return std::move(context); -} diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.h similarity index 79% rename from src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h rename to src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.h index f61d8a8a..934f0922 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h +++ b/src/ZoneCodeGeneratorLib/Generating/PerAssetRenderingContext.h @@ -1,11 +1,10 @@ #pragma once -#include "BaseRenderingContext.h" #include "Domain/Computations/MemberComputations.h" #include "Domain/Information/StructureInformation.h" +#include "PerVariantRenderingContext.h" #include "Persistence/IDataRepository.h" -#include #include class RenderingUsedType @@ -25,11 +24,10 @@ public: bool m_pointer_array_reference_is_reusable; }; -class OncePerAssetRenderingContext : public BaseRenderingContext +class PerAssetRenderingContext : public PerVariantRenderingContext { public: - static std::unique_ptr - BuildContext(const IDataRepository* repository, StructureInformation* asset, const GameVariant* variant); + PerAssetRenderingContext(const IDataRepository* repository, StructureInformation* asset, const GameVariant* variant); StructureInformation* m_asset; @@ -39,8 +37,6 @@ public: bool m_has_actions; private: - OncePerAssetRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks); - RenderingUsedType* AddUsedType(std::unique_ptr usedType); RenderingUsedType* GetBaseType(const IDataRepository* repository, const MemberComputations* computations, RenderingUsedType* usedType); void AddMembersToContext(const IDataRepository* repository, const StructureInformation* info); diff --git a/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.cpp new file mode 100644 index 00000000..ee814499 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.cpp @@ -0,0 +1,34 @@ +#include "PerTemplateRenderingContext.h" + +#include "Domain/Computations/StructureComputations.h" + +PerTemplateRenderingContext::PerTemplateRenderingContext(const IDataRepository* repository) + : m_game(repository->GetGameName()), + m_blocks(repository->GetAllFastFileBlocks()), + m_default_normal_block(nullptr), + m_default_temp_block(nullptr) +{ + for (const auto* block : m_blocks) + { + if (block->m_is_default) + { + if (block->m_type == FastFileBlockType::NORMAL && m_default_normal_block == nullptr) + m_default_normal_block = block; + else if (block->m_type == FastFileBlockType::TEMP && m_default_temp_block == nullptr) + m_default_temp_block = block; + } + } + + for (auto* info : repository->GetAllStructureInformation()) + { + if (!StructureComputations(info).IsAsset()) + continue; + + m_all_assets.emplace_back(info); + } + + for (auto* variant : repository->GetGameVariants()) + { + m_all_variants.emplace_back(variant); + } +} diff --git a/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.h new file mode 100644 index 00000000..5d1879da --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/PerTemplateRenderingContext.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Persistence/IDataRepository.h" + +#include +#include + +class PerTemplateRenderingContext +{ +public: + explicit PerTemplateRenderingContext(const IDataRepository* repository); + + std::string m_game; + std::vector m_blocks; + + const FastFileBlock* m_default_normal_block; + const FastFileBlock* m_default_temp_block; + + std::vector m_all_assets; + std::vector m_all_variants; +}; diff --git a/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.cpp new file mode 100644 index 00000000..5a873d56 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.cpp @@ -0,0 +1,12 @@ +#include "PerVariantRenderingContext.h" + +PerVariantRenderingContext::PerVariantRenderingContext(const IDataRepository* repository, const GameVariant* variant) + : PerTemplateRenderingContext(repository), + m_word_size_mismatch(variant->m_word_size != OWN_WORD_SIZE), + m_word_size(variant->m_word_size), + m_pointer_size(GetPointerSizeForWordSize(variant->m_word_size)), + m_endianness_mismatch(std::endian::native != variant->m_endianness), + m_endianness(variant->m_endianness), + m_variant(variant) +{ +} diff --git a/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.h new file mode 100644 index 00000000..a5b6d097 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/PerVariantRenderingContext.h @@ -0,0 +1,20 @@ +#pragma once + +#include "PerTemplateRenderingContext.h" +#include "Persistence/IDataRepository.h" + +#include + +class PerVariantRenderingContext : public PerTemplateRenderingContext +{ +public: + PerVariantRenderingContext(const IDataRepository* repository, const GameVariant* variant); + + bool m_word_size_mismatch; + WordSize m_word_size; + unsigned m_pointer_size; + bool m_endianness_mismatch; + std::endian m_endianness; + + const GameVariant* m_variant; +}; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp index 973a5e35..8377449d 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp @@ -1,6 +1,7 @@ #include "AssetStructTestsTemplate.h" #include "Domain/Computations/StructureComputations.h" +#include "Internal/BasePerVariantTemplate.h" #include "Internal/BaseTemplate.h" #include "Utils/StringUtils.h" @@ -11,11 +12,11 @@ namespace { constexpr int TAG_SOURCE = 1; - 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) { } @@ -76,11 +77,11 @@ namespace LINE("}") } - const OncePerAssetRenderingContext& m_env; + const PerAssetRenderingContext& m_env; }; } // namespace -std::vector AssetStructTestsTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) +std::vector AssetStructTestsTemplate::GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) { std::vector files; @@ -98,7 +99,7 @@ std::vector AssetStructTestsTemplate::GetFilesToRenderOncePerA return files; } -void AssetStructTestsTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) +void AssetStructTestsTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) { PerAsset t(stream, context); diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.h index 9814cce9..428cbe04 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.h @@ -5,6 +5,6 @@ class AssetStructTestsTemplate final : public ICodeTemplate { public: - std::vector GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) override; - void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) override; + std::vector GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) override; + void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) override; }; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.cpp new file mode 100644 index 00000000..bc3064e4 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.cpp @@ -0,0 +1,65 @@ +#include "BasePerVariantTemplate.h" + +#include "Domain/Computations/StructureComputations.h" +#include "Domain/Definition/ArrayDeclarationModifier.h" + +#include + +BasePerVariantTemplate::BasePerVariantTemplate(std::ostream& stream, const PerVariantRenderingContext& context) + : BaseTemplate(stream, context), + m_env(context) +{ +} + +std::string BasePerVariantTemplate::MakeAllocAlignment(const StructureInformation& info) const +{ + if (info.m_alloc_alignment) + return MakeEvaluation(info.m_alloc_alignment.get()); + + return std::to_string(info.m_definition->GetAlignment(m_env.m_word_size)); +} + +size_t BasePerVariantTemplate::SizeForDeclModifierLevel(const MemberInformation& memberInfo, const size_t level) const +{ + const auto& declModifiers = memberInfo.m_member->m_type_declaration->m_declaration_modifiers; + if (declModifiers.empty()) + return memberInfo.m_member->m_type_declaration->GetSize(m_env.m_word_size); + + if (level == 0) + return memberInfo.m_member->m_type_declaration->GetSize(m_env.m_word_size); + + size_t currentSize = memberInfo.m_member->m_type_declaration->m_type->GetSize(m_env.m_word_size); + const auto end = declModifiers.rbegin() + (declModifiers.size() - level); + for (auto i = declModifiers.rbegin(); i != end; ++i) + { + if ((*i)->GetType() == DeclarationModifierType::POINTER) + currentSize = m_env.m_pointer_size; + else + currentSize *= dynamic_cast(i->get())->m_size; + } + + return currentSize; +} + +size_t BasePerVariantTemplate::OffsetForMemberModifier(const MemberInformation& memberInfo, + const DeclarationModifierComputations& modifier, + const size_t nestedBaseOffset) const +{ + size_t curOffset = memberInfo.m_member->m_offset; + + auto curLevel = 0u; + for (const auto index : modifier.GetArrayIndices()) + { + if (index > 0) + curOffset += index * SizeForDeclModifierLevel(memberInfo, curLevel + 1); + + curLevel++; + } + + return curOffset + nestedBaseOffset; +} + +bool BasePerVariantTemplate::MemoryLayoutMatches(const StructureInformation& structureInfo) const +{ + return !m_env.m_word_size_mismatch || structureInfo.m_has_matching_cross_platform_memory_layout; +} diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.h new file mode 100644 index 00000000..eb7dc7cb --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BasePerVariantTemplate.h @@ -0,0 +1,27 @@ +#pragma once + +#include "BaseTemplate.h" +#include "Domain/Evaluation/OperandDynamic.h" +#include "Domain/Evaluation/Operation.h" +#include "Generating/PerAssetRenderingContext.h" + +#include + +class BasePerVariantTemplate : public BaseTemplate +{ +protected: + BasePerVariantTemplate(std::ostream& stream, const PerVariantRenderingContext& context); + + [[nodiscard]] std::string MakeAllocAlignment(const StructureInformation& info) const; + + [[nodiscard]] size_t SizeForDeclModifierLevel(const MemberInformation& memberInfo, size_t level) const; + [[nodiscard]] size_t + OffsetForMemberModifier(const MemberInformation& memberInfo, const DeclarationModifierComputations& modifier, size_t nestedBaseOffset) const; + + /** + * Evaluates whether the struct/union has matching memory layouts between the generated code and game. + */ + [[nodiscard]] bool MemoryLayoutMatches(const StructureInformation& structureInfo) const; + + const PerVariantRenderingContext& m_env; +}; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.cpp index 1e5e6f14..6cc3b2b1 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.cpp @@ -6,7 +6,7 @@ #include -BaseTemplate::BaseTemplate(std::ostream& stream, const BaseRenderingContext& context) +BaseTemplate::BaseTemplate(std::ostream& stream, const PerTemplateRenderingContext& context) : m_out(stream), m_intendation(0u), m_env(context) @@ -256,14 +256,6 @@ void BaseTemplate::MakeEvaluationInternal(const IEvaluation* evaluation, std::os MakeOperandDynamic(dynamic_cast(evaluation), str); } -std::string BaseTemplate::MakeAllocAlignment(const StructureInformation& info) const -{ - if (info.m_alloc_alignment) - return MakeEvaluation(info.m_alloc_alignment.get()); - - return std::to_string(info.m_definition->GetAlignment(m_env.m_word_size)); -} - std::string BaseTemplate::MakeEvaluation(const IEvaluation* evaluation) { std::ostringstream str; @@ -279,48 +271,3 @@ bool BaseTemplate::ShouldGenerateFillMethod(const RenderingUsedType& type) return isNotForeignAsset && (hasMismatchingStructure || isEmbeddedDynamic); } - -size_t BaseTemplate::SizeForDeclModifierLevel(const MemberInformation& memberInfo, const size_t level) const -{ - const auto& declModifiers = memberInfo.m_member->m_type_declaration->m_declaration_modifiers; - if (declModifiers.empty()) - return memberInfo.m_member->m_type_declaration->GetSize(m_env.m_word_size); - - if (level == 0) - return memberInfo.m_member->m_type_declaration->GetSize(m_env.m_word_size); - - size_t currentSize = memberInfo.m_member->m_type_declaration->m_type->GetSize(m_env.m_word_size); - const auto end = declModifiers.rbegin() + (declModifiers.size() - level); - for (auto i = declModifiers.rbegin(); i != end; ++i) - { - if ((*i)->GetType() == DeclarationModifierType::POINTER) - currentSize = m_env.m_pointer_size; - else - currentSize *= dynamic_cast(i->get())->m_size; - } - - return currentSize; -} - -size_t BaseTemplate::OffsetForMemberModifier(const MemberInformation& memberInfo, - const DeclarationModifierComputations& modifier, - const size_t nestedBaseOffset) const -{ - size_t curOffset = memberInfo.m_member->m_offset; - - auto curLevel = 0u; - for (const auto index : modifier.GetArrayIndices()) - { - if (index > 0) - curOffset += index * SizeForDeclModifierLevel(memberInfo, curLevel + 1); - - curLevel++; - } - - return curOffset + nestedBaseOffset; -} - -bool BaseTemplate::MemoryLayoutMatches(const StructureInformation& structureInfo) const -{ - return !m_env.m_word_size_mismatch || structureInfo.m_has_matching_cross_platform_memory_layout; -} diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.h index 3b37a5d6..797885b6 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/Internal/BaseTemplate.h @@ -5,8 +5,8 @@ #include "Domain/Evaluation/OperandDynamic.h" #include "Domain/Evaluation/OperandStatic.h" #include "Domain/Evaluation/Operation.h" -#include "Generating/BaseRenderingContext.h" -#include "Generating/OncePerAssetRenderingContext.h" +#include "Generating/PerAssetRenderingContext.h" +#include "Generating/PerTemplateRenderingContext.h" #include #include @@ -16,7 +16,7 @@ class BaseTemplate protected: static constexpr auto INTENDATION = " "; - explicit BaseTemplate(std::ostream& stream, const BaseRenderingContext& context); + explicit BaseTemplate(std::ostream& stream, const PerTemplateRenderingContext& context); void DoIntendation() const; @@ -33,7 +33,6 @@ protected: static std::string MakeArrayIndices(const DeclarationModifierComputations& modifierComputations); static std::string MakeCustomActionCall(const CustomAction* action); static std::string MakeArrayCount(const ArrayDeclarationModifier* arrayModifier); - std::string MakeAllocAlignment(const StructureInformation& info) const; static std::string MakeEvaluation(const IEvaluation* evaluation); static bool ShouldGenerateFillMethod(const RenderingUsedType& type); @@ -41,15 +40,6 @@ protected: static void MakeSafeTypeNameInternal(const DataDefinition* def, std::ostringstream& str); static void MakeArrayIndicesInternal(const DeclarationModifierComputations& modifierComputations, std::ostringstream& str); - [[nodiscard]] size_t SizeForDeclModifierLevel(const MemberInformation& memberInfo, size_t level) const; - [[nodiscard]] size_t - OffsetForMemberModifier(const MemberInformation& memberInfo, const DeclarationModifierComputations& modifier, size_t nestedBaseOffset) const; - - /** - * Evaluates whether the struct/union has matching memory layouts between the generated code and game. - */ - [[nodiscard]] bool MemoryLayoutMatches(const StructureInformation& structureInfo) const; - std::ostream& m_out; unsigned m_intendation; @@ -61,7 +51,7 @@ private: static void MakeOperation(const Operation* operation, std::ostringstream& str); static void MakeEvaluationInternal(const IEvaluation* evaluation, std::ostringstream& str); - const BaseRenderingContext& m_env; + const PerTemplateRenderingContext& m_env; }; #define LINE(x) \ diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp index 474494f7..079bf302 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp @@ -2,6 +2,7 @@ #include "Domain/Computations/MemberComputations.h" #include "Domain/Computations/StructureComputations.h" +#include "Internal/BasePerVariantTemplate.h" #include "Internal/BaseTemplate.h" #include "Utils/StringUtils.h" @@ -14,11 +15,11 @@ namespace constexpr int TAG_SOURCE = 2; constexpr int TAG_ALL_LOADERS = 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}_load_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) { } @@ -168,7 +169,7 @@ namespace LINEF("#include \"{0}_{1}_{2}_load_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) LINE("") - LINEF("#include \"Game/{0}/AssetMarker{0}.h\"", m_env.m_game) + LINEF("#include \"Game/{0}/AssetMarker{0}_{1}.h\"", m_env.m_game, Lower(m_env.m_variant->m_name)) LINE("") LINE("#include \"Loading/AssetInfoCollector.h\"") @@ -2157,28 +2158,28 @@ namespace LINE("}") } - const OncePerAssetRenderingContext& m_env; + const PerAssetRenderingContext& m_env; }; } // namespace -std::vector ZoneLoadTemplate::GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) +std::vector ZoneLoadTemplate::GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) { std::vector files; - files.emplace_back(std::format("AssetLoader{0}.h", context.m_game), TAG_ALL_LOADERS); + files.emplace_back(std::format("AssetLoader{0}_{1}.h", context.m_game, context.m_variant->m_name), TAG_ALL_LOADERS); return files; } -void ZoneLoadTemplate::RenderOncePerTemplateFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) +void ZoneLoadTemplate::RenderOncePerVariantFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) { assert(fileTag == TAG_ALL_LOADERS); - const PerTemplate t(stream, context); + const PerVariant t(stream, context); t.AllLoaders(); } -std::vector ZoneLoadTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) +std::vector ZoneLoadTemplate::GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) { std::vector files; @@ -2197,7 +2198,7 @@ std::vector ZoneLoadTemplate::GetFilesToRenderOncePerAsset(con return files; } -void ZoneLoadTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) +void ZoneLoadTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) { PerAsset t(stream, context); diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.h index 04787ea8..c10435ae 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.h @@ -5,9 +5,9 @@ class ZoneLoadTemplate final : public ICodeTemplate { public: - std::vector GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) override; - void RenderOncePerTemplateFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) override; + std::vector GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) override; + void RenderOncePerVariantFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) override; - std::vector GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) override; - void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) override; + std::vector GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) override; + void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) override; }; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp index 423032c8..302c074a 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp @@ -2,6 +2,7 @@ #include "Domain/Computations/MemberComputations.h" #include "Domain/Computations/StructureComputations.h" +#include "Internal/BasePerVariantTemplate.h" #include "Internal/BaseTemplate.h" #include "Utils/StringUtils.h" @@ -14,11 +15,11 @@ namespace constexpr int TAG_SOURCE = 2; constexpr int TAG_ALL_MARKERS = 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}_mark_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) { } @@ -786,28 +787,28 @@ namespace LINE("}") } - const OncePerAssetRenderingContext& m_env; + const PerAssetRenderingContext& m_env; }; } // namespace -std::vector ZoneMarkTemplate::GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) +std::vector ZoneMarkTemplate::GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) { std::vector files; - files.emplace_back(std::format("AssetMarker{0}.h", context.m_game), TAG_ALL_MARKERS); + files.emplace_back(std::format("AssetMarker{0}_{1}.h", context.m_game, context.m_variant->m_name), TAG_ALL_MARKERS); return files; } -void ZoneMarkTemplate::RenderOncePerTemplateFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) +void ZoneMarkTemplate::RenderOncePerVariantFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) { assert(fileTag == TAG_ALL_MARKERS); - const PerTemplate t(stream, context); + const PerVariant t(stream, context); t.AllMarkers(); } -std::vector ZoneMarkTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) +std::vector ZoneMarkTemplate::GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) { std::vector files; @@ -826,7 +827,7 @@ std::vector ZoneMarkTemplate::GetFilesToRenderOncePerAsset(con return files; } -void ZoneMarkTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) +void ZoneMarkTemplate::RenderOncePerAssetFile(std::ostream& stream, const CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) { PerAsset t(stream, context); diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.h index 36b6ee8c..3f622cee 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.h @@ -5,9 +5,9 @@ class ZoneMarkTemplate final : public ICodeTemplate { public: - std::vector GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) override; - void RenderOncePerTemplateFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) override; + std::vector GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) override; + void RenderOncePerVariantFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) override; - std::vector GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) override; - void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) override; + std::vector GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) override; + void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) override; }; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp index dd7fbaa6..e7f516a3 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp @@ -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 ZoneWriteTemplate::GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) +std::vector ZoneWriteTemplate::GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) { std::vector 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 ZoneWriteTemplate::GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) +std::vector ZoneWriteTemplate::GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) { std::vector files; @@ -1679,7 +1680,7 @@ std::vector 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); diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.h b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.h index ab6220cd..c5475c0c 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.h +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.h @@ -5,9 +5,9 @@ class ZoneWriteTemplate final : public ICodeTemplate { public: - std::vector GetFilesToRenderOncePerTemplate(const OncePerTemplateRenderingContext& context) override; - void RenderOncePerTemplateFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerTemplateRenderingContext& context) override; + std::vector GetFilesToRenderOncePerVariant(const PerVariantRenderingContext& context) override; + void RenderOncePerVariantFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerVariantRenderingContext& context) override; - std::vector GetFilesToRenderOncePerAsset(const OncePerAssetRenderingContext& context) override; - void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const OncePerAssetRenderingContext& context) override; + std::vector GetFilesToRenderOncePerAsset(const PerAssetRenderingContext& context) override; + void RenderOncePerAssetFile(std::ostream& stream, CodeTemplateFileTag fileTag, const PerAssetRenderingContext& context) override; }; diff --git a/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp index 065c355f..8ad2ad7f 100644 --- a/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp +++ b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp @@ -1,6 +1,6 @@ #include "ZoneDefWriterIW5.h" -#include "Game/IW5/AssetMarkerIW5.h" +#include "Game/IW5/IW5.h" using namespace IW5; diff --git a/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp index 0cf08df2..598789fa 100644 --- a/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp +++ b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp @@ -1,6 +1,6 @@ #include "ZoneDefWriterT5.h" -#include "Game/T5/AssetMarkerT5.h" +#include "Game/T5/T5.h" using namespace T5; diff --git a/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp b/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp index eadf6c3c..331fe40d 100644 --- a/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp +++ b/src/ZoneLoading/Game/IW3/ContentLoaderIW3.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderIW3.h" -#include "Game/IW3/AssetLoaderIW3.h" +#include "Game/IW3/AssetLoaderIW3_pc.h" #include "Game/IW3/IW3.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp index 6f041a62..83102bb1 100644 --- a/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp +++ b/src/ZoneLoading/Game/IW4/ContentLoaderIW4.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderIW4.h" -#include "Game/IW4/AssetLoaderIW4.h" +#include "Game/IW4/AssetLoaderIW4_pc32.h" #include "Game/IW4/IW4.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc32 loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp b/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp index b36e2df5..22beef5d 100644 --- a/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp +++ b/src/ZoneLoading/Game/IW5/ContentLoaderIW5.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderIW5.h" -#include "Game/IW5/AssetLoaderIW5.h" +#include "Game/IW5/AssetLoaderIW5_pc32.h" #include "Game/IW5/IW5.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc32 loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp b/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp index f07af351..de27aaf5 100644 --- a/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp +++ b/src/ZoneLoading/Game/QOS/ContentLoaderQOS.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderQOS.h" -#include "Game/QOS/AssetLoaderQOS.h" +#include "Game/QOS/AssetLoaderQOS_pc.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" #include @@ -43,7 +43,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp b/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp index 7ec3c387..c47dc610 100644 --- a/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp +++ b/src/ZoneLoading/Game/T4/ContentLoaderT4.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderT4.h" -#include "Game/T4/AssetLoaderT4.h" +#include "Game/T4/AssetLoaderT4_pc.h" #include "Game/T4/T4.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp b/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp index 2959c432..b90ccef2 100644 --- a/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp +++ b/src/ZoneLoading/Game/T5/ContentLoaderT5.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderT5.h" -#include "Game/T5/AssetLoaderT5.h" +#include "Game/T5/AssetLoaderT5_pc.h" #include "Game/T5/T5.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp b/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp index 86cb2bd7..08b2d17d 100644 --- a/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp +++ b/src/ZoneLoading/Game/T6/ContentLoaderT6.cpp @@ -1,6 +1,6 @@ #include "ContentLoaderT6.h" -#include "Game/T6/AssetLoaderT6.h" +#include "Game/T6/AssetLoaderT6_pc.h" #include "Game/T6/T6.h" #include "Loading/Exception/UnsupportedAssetTypeException.h" @@ -44,7 +44,7 @@ void ContentLoader::LoadXAsset(const bool atStreamStart) const #define LOAD_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Loader_##typeName loader(m_zone, m_stream); \ + Loader_##typeName##_pc loader(m_zone, m_stream); \ loader.Load(&varXAsset->header.headerEntry); \ break; \ } diff --git a/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp b/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp index d0992724..34ca80a7 100644 --- a/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp +++ b/src/ZoneWriting/Game/IW3/ContentWriterIW3.cpp @@ -1,6 +1,6 @@ #include "ContentWriterIW3.h" -#include "Game/IW3/AssetWriterIW3.h" +#include "Game/IW3/AssetWriterIW3_pc.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp b/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp index afac3863..7f9b6efd 100644 --- a/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp +++ b/src/ZoneWriting/Game/IW4/ContentWriterIW4.cpp @@ -1,6 +1,6 @@ #include "ContentWriterIW4.h" -#include "Game/IW4/AssetWriterIW4.h" +#include "Game/IW4/AssetWriterIW4_pc32.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc32 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp b/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp index d1e72462..167fe906 100644 --- a/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp +++ b/src/ZoneWriting/Game/IW5/ContentWriterIW5.cpp @@ -1,6 +1,6 @@ #include "ContentWriterIW5.h" -#include "Game/IW5/AssetWriterIW5.h" +#include "Game/IW5/AssetWriterIW5_pc32.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc32 writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp b/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp index 0f507626..0f408257 100644 --- a/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp +++ b/src/ZoneWriting/Game/QOS/ContentWriterQOS.cpp @@ -1,6 +1,6 @@ #include "ContentWriterQOS.h" -#include "Game/QOS/AssetWriterQOS.h" +#include "Game/QOS/AssetWriterQOS_pc.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/T4/ContentWriterT4.cpp b/src/ZoneWriting/Game/T4/ContentWriterT4.cpp index 28fccf37..2538b487 100644 --- a/src/ZoneWriting/Game/T4/ContentWriterT4.cpp +++ b/src/ZoneWriting/Game/T4/ContentWriterT4.cpp @@ -1,6 +1,6 @@ #include "ContentWriterT4.h" -#include "Game/T4/AssetWriterT4.h" +#include "Game/T4/AssetWriterT4_pc.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/T5/ContentWriterT5.cpp b/src/ZoneWriting/Game/T5/ContentWriterT5.cpp index 98197980..cc06b891 100644 --- a/src/ZoneWriting/Game/T5/ContentWriterT5.cpp +++ b/src/ZoneWriting/Game/T5/ContentWriterT5.cpp @@ -1,6 +1,6 @@ #include "ContentWriterT5.h" -#include "Game/T5/AssetWriterT5.h" +#include "Game/T5/AssetWriterT5_pc.h" #include "Writing/WritingException.h" #include @@ -80,7 +80,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ } diff --git a/src/ZoneWriting/Game/T6/ContentWriterT6.cpp b/src/ZoneWriting/Game/T6/ContentWriterT6.cpp index eea9fee4..5510d576 100644 --- a/src/ZoneWriting/Game/T6/ContentWriterT6.cpp +++ b/src/ZoneWriting/Game/T6/ContentWriterT6.cpp @@ -1,6 +1,6 @@ #include "ContentWriterT6.h" -#include "Game/T6/AssetWriterT6.h" +#include "Game/T6/AssetWriterT6_pc.h" #include "Writing/WritingException.h" #include @@ -83,7 +83,7 @@ void ContentWriter::WriteXAsset(const bool atStreamStart) #define WRITE_ASSET(type_index, typeName, headerEntry) \ case type_index: \ { \ - Writer_##typeName writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ + Writer_##typeName##_pc writer(varXAsset->header.headerEntry, m_zone, *m_stream); \ writer.Write(varXAsset->header.headerEntry, varXAssetWritten.AtOffset(4)); \ break; \ }