diff --git a/src/ZoneCode.lua b/src/ZoneCode.lua index 1bcc4118..4441f61c 100644 --- a/src/ZoneCode.lua +++ b/src/ZoneCode.lua @@ -1,275 +1,315 @@ ZoneCode = {} -ZoneCode.Assets = { +ZoneCode.Games = { IW3 = { - "PhysPreset", - "XAnimParts", - "XModel", - "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", - "LoadedSound", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable" + Variants = { + "pc" + }, + Assets = { + "PhysPreset", + "XAnimParts", + "XModel", + "Material", + "MaterialTechniqueSet", + "GfxImage", + "snd_alias_list_t", + "SndCurve", + "LoadedSound", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponDef", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable" + } }, IW4 = { - "PhysPreset", - "PhysCollmap", - "XAnimParts", - "XModel", - "Material", - "MaterialPixelShader", - "MaterialVertexShader", - "MaterialVertexDeclaration", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", - "LoadedSound", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "FxWorld", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponCompleteDef", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable", - "LeaderboardDef", - "StructuredDataDefSet", - "TracerDef", - "VehicleDef", - "AddonMapEnts" + Variants = { + "pc32", + "pc64" + }, + Assets = { + "PhysPreset", + "PhysCollmap", + "XAnimParts", + "XModel", + "Material", + "MaterialPixelShader", + "MaterialVertexShader", + "MaterialVertexDeclaration", + "MaterialTechniqueSet", + "GfxImage", + "snd_alias_list_t", + "SndCurve", + "LoadedSound", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "FxWorld", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponCompleteDef", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable", + "LeaderboardDef", + "StructuredDataDefSet", + "TracerDef", + "VehicleDef", + "AddonMapEnts" + } }, IW5 = { - "PhysPreset", - "PhysCollmap", - "XAnimParts", - "XModelSurfs", - "XModel", - "Material", - "MaterialPixelShader", - "MaterialVertexShader", - "MaterialVertexDeclaration", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", - "LoadedSound", - "clipMap_t", - "ComWorld", - "GlassWorld", - "PathData", - "VehicleTrack", - "MapEnts", - "FxWorld", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponAttachment", - "WeaponCompleteDef", - "FxEffectDef", - "FxImpactTable", - "SurfaceFxTable", - "RawFile", - "ScriptFile", - "StringTable", - "LeaderboardDef", - "StructuredDataDefSet", - "TracerDef", - "VehicleDef", - "AddonMapEnts", + Variants = { + "pc32", + "pc64" + }, + Assets = { + "PhysPreset", + "PhysCollmap", + "XAnimParts", + "XModelSurfs", + "XModel", + "Material", + "MaterialPixelShader", + "MaterialVertexShader", + "MaterialVertexDeclaration", + "MaterialTechniqueSet", + "GfxImage", + "snd_alias_list_t", + "SndCurve", + "LoadedSound", + "clipMap_t", + "ComWorld", + "GlassWorld", + "PathData", + "VehicleTrack", + "MapEnts", + "FxWorld", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponAttachment", + "WeaponCompleteDef", + "FxEffectDef", + "FxImpactTable", + "SurfaceFxTable", + "RawFile", + "ScriptFile", + "StringTable", + "LeaderboardDef", + "StructuredDataDefSet", + "TracerDef", + "VehicleDef", + "AddonMapEnts", + } }, QOS = { - "PhysPreset", - "PhysConstraints", - "DestructibleDef", - "XAnimParts", - "XModel", - "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndCurve", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable", - "XmlTree", - "SceneAnimation", - "Cutscene", - "CustomCamera", + Variants = { + "pc" + }, + Assets = { + "PhysPreset", + "PhysConstraints", + "DestructibleDef", + "XAnimParts", + "XModel", + "Material", + "MaterialTechniqueSet", + "GfxImage", + "snd_alias_list_t", + "SndCurve", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponDef", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable", + "XmlTree", + "SceneAnimation", + "Cutscene", + "CustomCamera", + } }, T4 = { - "PhysPreset", - "PhysConstraints", - "DestructibleDef", - "XAnimParts", - "XModel", - "Material", - "MaterialTechniqueSet", - "GfxImage", - "snd_alias_list_t", - "SndDriverGlobals", - "LoadedSound", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponDef", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable", - "PackIndex", + Variants = { + "pc" + }, + Assets = { + "PhysPreset", + "PhysConstraints", + "DestructibleDef", + "XAnimParts", + "XModel", + "Material", + "MaterialTechniqueSet", + "GfxImage", + "snd_alias_list_t", + "SndDriverGlobals", + "LoadedSound", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponDef", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable", + "PackIndex", + } }, T5 = { - "PhysPreset", - "PhysConstraints", - "DestructibleDef", - "XAnimParts", - "XModel", - "Material", - "MaterialTechniqueSet", - "GfxImage", - "SndBank", - "SndPatch", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "GfxWorld", - "GfxLightDef", - "Font_s", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponVariantDef", - "SndDriverGlobals", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable", - "PackIndex", - "XGlobals", - "ddlRoot_t", - "Glasses", - "EmblemSet" + Variants = { + "pc" + }, + Assets = { + "PhysPreset", + "PhysConstraints", + "DestructibleDef", + "XAnimParts", + "XModel", + "Material", + "MaterialTechniqueSet", + "GfxImage", + "SndBank", + "SndPatch", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "GfxWorld", + "GfxLightDef", + "Font_s", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponVariantDef", + "SndDriverGlobals", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable", + "PackIndex", + "XGlobals", + "ddlRoot_t", + "Glasses", + "EmblemSet" + } }, T6 = { - "PhysPreset", - "PhysConstraints", - "DestructibleDef", - "XAnimParts", - "XModel", - "Material", - "MaterialTechniqueSet", - "GfxImage", - "SndBank", - "SndPatch", - "clipMap_t", - "ComWorld", - "GameWorldSp", - "GameWorldMp", - "MapEnts", - "GfxWorld", - "GfxLightDef", - "Font_s", - "FontIcon", - "MenuList", - "menuDef_t", - "LocalizeEntry", - "WeaponVariantDef", - "WeaponAttachment", - "WeaponAttachmentUnique", - "WeaponCamo", - "SndDriverGlobals", - "FxEffectDef", - "FxImpactTable", - "RawFile", - "StringTable", - "LeaderboardDef", - "XGlobals", - "ddlRoot_t", - "Glasses", - "EmblemSet", - "ScriptParseTree", - "KeyValuePairs", - "VehicleDef", - "MemoryBlock", - "AddonMapEnts", - "TracerDef", - "SkinnedVertsDef", - "Qdb", - "Slug", - "FootstepTableDef", - "FootstepFXTableDef", - "ZBarrierDef" + Variants = { + "pc" + }, + Assets = { + "PhysPreset", + "PhysConstraints", + "DestructibleDef", + "XAnimParts", + "XModel", + "Material", + "MaterialTechniqueSet", + "GfxImage", + "SndBank", + "SndPatch", + "clipMap_t", + "ComWorld", + "GameWorldSp", + "GameWorldMp", + "MapEnts", + "GfxWorld", + "GfxLightDef", + "Font_s", + "FontIcon", + "MenuList", + "menuDef_t", + "LocalizeEntry", + "WeaponVariantDef", + "WeaponAttachment", + "WeaponAttachmentUnique", + "WeaponCamo", + "SndDriverGlobals", + "FxEffectDef", + "FxImpactTable", + "RawFile", + "StringTable", + "LeaderboardDef", + "XGlobals", + "ddlRoot_t", + "Glasses", + "EmblemSet", + "ScriptParseTree", + "KeyValuePairs", + "VehicleDef", + "MemoryBlock", + "AddonMapEnts", + "TracerDef", + "SkinnedVertsDef", + "Qdb", + "Slug", + "FootstepTableDef", + "FootstepFXTableDef", + "ZBarrierDef" + } } } function ZoneCode:allTestFiles() result = {} - for game, assets in pairs(self.Assets) do + for game, gameData in pairs(self.Games) do local gameLower = string.lower(game) - for i, assetName in ipairs(assets) do - local assetNameLower = string.lower(assetName) - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_struct_test.cpp") + for i, variantName in ipairs(gameData.Variants) do + local variantLower = string.lower(variantName) + 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") + end end end @@ -279,14 +319,16 @@ end function ZoneCode:allMarkFiles() result = {} - for game, assets in pairs(self.Assets) do + for game, gameData in pairs(self.Games) do local gameLower = string.lower(game) - -- PerAsset - for i, assetName in ipairs(assets) do - local assetNameLower = string.lower(assetName) - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_mark_db.cpp") - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_mark_db.h") + for i, variantName in ipairs(gameData.Variants) do + local variantLower = string.lower(variantName) + 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 end -- PerTemplate @@ -299,14 +341,17 @@ end function ZoneCode:allLoadFiles() result = {} - for game, assets in pairs(self.Assets) do + for game, gameData in pairs(self.Games) do local gameLower = string.lower(game) - -- PerAsset - for i, assetName in ipairs(assets) do - local assetNameLower = string.lower(assetName) - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_load_db.cpp") - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_load_db.h") + for i, variantName in ipairs(gameData.Variants) do + local variantLower = string.lower(variantName) + -- Per Asset/Variant + 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 end -- PerTemplate @@ -319,14 +364,17 @@ end function ZoneCode:allWriteFiles() result = {} - for game, assets in pairs(self.Assets) do + for game, gameData in pairs(self.Games) do local gameLower = string.lower(game) - -- PerAsset - for i, assetName in ipairs(assets) do - local assetNameLower = string.lower(assetName) - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_write_db.cpp") - table.insert(result, "%{wks.location}/src/ZoneCode/Game/" .. game .. "/XAssets/" .. assetNameLower .. "/" .. assetNameLower .. "_" .. gameLower .. "_write_db.h") + for i, variantName in ipairs(gameData.Variants) do + local variantLower = string.lower(variantName) + -- Per Asset/Variant + 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 end -- PerTemplate diff --git a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp index 147c5648..dd24b843 100644 --- a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.cpp @@ -1,18 +1,16 @@ #include "BaseRenderingContext.h" -BaseRenderingContext::BaseRenderingContext(std::string game, - const WordSize gameWordSize, - const std::endian endianness, - std::vector fastFileBlocks) +BaseRenderingContext::BaseRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks) : m_game(std::move(game)), - m_word_size_mismatch(gameWordSize != OWN_WORD_SIZE), - m_word_size(gameWordSize), - m_pointer_size(GetPointerSizeForWordSize(gameWordSize)), - m_endianness_mismatch(std::endian::native != endianness), - m_endianness(endianness), + 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_default_temp_block(nullptr), + m_variant(variant) { for (const auto* block : m_blocks) { diff --git a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h index ed312aba..5aadbac9 100644 --- a/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h +++ b/src/ZoneCodeGeneratorLib/Generating/BaseRenderingContext.h @@ -19,6 +19,8 @@ public: const FastFileBlock* m_default_normal_block; const FastFileBlock* m_default_temp_block; + const GameVariant* m_variant; + protected: - BaseRenderingContext(std::string game, WordSize gameWordSize, std::endian endianness, std::vector fastFileBlocks); + 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 65620f60..45bdd7b3 100644 --- a/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp @@ -141,7 +141,7 @@ bool CodeGenerator::GenerateCode(const IDataRepository* repository) return false; } - for (auto* variant : repository->GetGameVariants()) + for (const auto* variant : repository->GetGameVariants()) { for (auto* asset : assets) { diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp index 0f70224a..a92af647 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.cpp @@ -18,11 +18,8 @@ RenderingUsedType::RenderingUsedType(const DataDefinition* type, StructureInform { } -OncePerAssetRenderingContext::OncePerAssetRenderingContext(std::string game, - const WordSize gameWordSize, - const std::endian endianness, - std::vector fastFileBlocks) - : BaseRenderingContext(std::move(game), gameWordSize, endianness, std::move(fastFileBlocks)), +OncePerAssetRenderingContext::OncePerAssetRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks) + : BaseRenderingContext(std::move(game), variant, std::move(fastFileBlocks)), m_asset(nullptr), m_has_actions(false) { @@ -47,7 +44,8 @@ RenderingUsedType* OncePerAssetRenderingContext::AddUsedType(std::unique_ptrm_type->GetType() == DataDefinitionType::TYPEDEF) { @@ -75,7 +73,7 @@ RenderingUsedType* OncePerAssetRenderingContext::GetBaseType(const IDataReposito return nullptr; } -void OncePerAssetRenderingContext::AddMembersToContext(const IDataRepository* repository, StructureInformation* info) +void OncePerAssetRenderingContext::AddMembersToContext(const IDataRepository* repository, const StructureInformation* info) { for (const auto& member : info->m_ordered_members) { @@ -119,7 +117,7 @@ void OncePerAssetRenderingContext::AddMembersToContext(const IDataRepository* re } } -void OncePerAssetRenderingContext::ScanUsedTypeIfNeeded(const IDataRepository* repository, MemberComputations* computations, RenderingUsedType* usedType) +void OncePerAssetRenderingContext::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) { @@ -163,7 +161,7 @@ void OncePerAssetRenderingContext::CreateUsedTypeCollections() } } -bool OncePerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* usedType) const +bool OncePerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* usedType) { const StructureComputations computations(usedType->m_info); @@ -191,8 +189,8 @@ bool OncePerAssetRenderingContext::UsedTypeHasActions(const RenderingUsedType* u std::unique_ptr OncePerAssetRenderingContext::BuildContext(const IDataRepository* repository, StructureInformation* asset, const GameVariant* variant) { - auto context = std::make_unique( - OncePerAssetRenderingContext(repository->GetGameName(), variant->m_word_size, variant->m_endianness, repository->GetAllFastFileBlocks())); + auto context = + std::make_unique(OncePerAssetRenderingContext(repository->GetGameName(), variant, repository->GetAllFastFileBlocks())); context->MakeAsset(repository, asset); context->CreateUsedTypeCollections(); diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h b/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h index 5529ef0b..f61d8a8a 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h +++ b/src/ZoneCodeGeneratorLib/Generating/OncePerAssetRenderingContext.h @@ -39,15 +39,15 @@ public: bool m_has_actions; private: - OncePerAssetRenderingContext(std::string game, WordSize gameWordSize, std::endian endianness, std::vector fastFileBlocks); + OncePerAssetRenderingContext(std::string game, const GameVariant* variant, std::vector fastFileBlocks); RenderingUsedType* AddUsedType(std::unique_ptr usedType); - RenderingUsedType* GetBaseType(const IDataRepository* repository, MemberComputations* computations, RenderingUsedType* usedType); - void AddMembersToContext(const IDataRepository* repository, StructureInformation* info); - void ScanUsedTypeIfNeeded(const IDataRepository* repository, MemberComputations* computations, RenderingUsedType* usedType); + RenderingUsedType* GetBaseType(const IDataRepository* repository, const MemberComputations* computations, RenderingUsedType* usedType); + void AddMembersToContext(const IDataRepository* repository, const StructureInformation* info); + void ScanUsedTypeIfNeeded(const IDataRepository* repository, const MemberComputations* computations, RenderingUsedType* usedType); void MakeAsset(const IDataRepository* repository, StructureInformation* asset); void CreateUsedTypeCollections(); - bool UsedTypeHasActions(const RenderingUsedType* usedType) const; + static bool UsedTypeHasActions(const RenderingUsedType* usedType); std::unordered_map> m_used_types_lookup; }; diff --git a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp b/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp index f6d183da..cc93a68d 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.cpp @@ -5,11 +5,10 @@ #include OncePerTemplateRenderingContext::OncePerTemplateRenderingContext(std::string game, - const WordSize gameWordSize, - const std::endian endianness, + const GameVariant* variant, std::vector fastFileBlocks, std::vector assets) - : BaseRenderingContext(std::move(game), gameWordSize, endianness, std::move(fastFileBlocks)), + : BaseRenderingContext(std::move(game), variant, std::move(fastFileBlocks)), m_assets(std::move(assets)) { for (const auto* block : m_blocks) @@ -35,6 +34,6 @@ std::unique_ptr OncePerTemplateRenderingContext assetInformation.emplace_back(info); } - return std::make_unique(OncePerTemplateRenderingContext( - repository->GetGameName(), variant->m_word_size, variant->m_endianness, repository->GetAllFastFileBlocks(), assetInformation)); + 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 index 32ee4ead..9ec52287 100644 --- a/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.h +++ b/src/ZoneCodeGeneratorLib/Generating/OncePerTemplateRenderingContext.h @@ -15,8 +15,7 @@ public: private: OncePerTemplateRenderingContext(std::string game, - WordSize gameWordSize, - std::endian endianness, + const GameVariant* variant, std::vector fastFileBlocks, std::vector assets); }; diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp index 7e521f0b..48c55069 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/AssetStructTestsTemplate.cpp @@ -90,7 +90,10 @@ std::vector AssetStructTestsTemplate::GetFilesToRenderOncePerA auto gameName = context.m_game; utils::MakeStringLowerCase(gameName); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_struct_test.cpp", assetName, gameName), TAG_SOURCE); + auto variantName = context.m_variant->m_name; + utils::MakeStringLowerCase(variantName); + + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_struct_test.cpp", assetName, gameName, variantName), TAG_SOURCE); return files; } diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp index 34e88814..2cfd4dd1 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp @@ -32,7 +32,11 @@ namespace for (const auto* asset : m_env.m_assets) { - LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_load_db.h\"", m_env.m_game, Lower(asset->m_definition->m_name), Lower(m_env.m_game)) + LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_load_db.h\"", + m_env.m_game, + Lower(asset->m_definition->m_name), + Lower(m_env.m_game), + Lower(m_env.m_variant->m_name)) } } @@ -162,7 +166,7 @@ namespace { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_load_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game)) + 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) LINE("") @@ -174,7 +178,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_load_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game)) + LINEF("#include \"../{0}/{0}_{1}_{2}_load_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } @@ -2185,8 +2189,11 @@ std::vector ZoneLoadTemplate::GetFilesToRenderOncePerAsset(con auto gameName = context.m_game; utils::MakeStringLowerCase(gameName); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_load_db.h", assetName, gameName), TAG_HEADER); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_load_db.cpp", assetName, gameName), TAG_SOURCE); + auto variantName = context.m_variant->m_name; + utils::MakeStringLowerCase(variantName); + + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_load_db.h", assetName, gameName, variantName), TAG_HEADER); + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_load_db.cpp", assetName, gameName, variantName), TAG_SOURCE); return files; } diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp index ac6f0b32..d1b0ee39 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneMarkTemplate.cpp @@ -32,7 +32,11 @@ namespace for (const auto* asset : m_env.m_assets) { - LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_mark_db.h\"", m_env.m_game, Lower(asset->m_definition->m_name), Lower(m_env.m_game)) + LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_mark_db.h\"", + m_env.m_game, + Lower(asset->m_definition->m_name), + Lower(m_env.m_game), + Lower(m_env.m_variant->m_name)) } } @@ -139,7 +143,7 @@ namespace { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_mark_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game)) + LINEF("#include \"{0}_{1}_{2}_mark_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) if (!m_env.m_referenced_assets.empty()) { @@ -147,7 +151,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_mark_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game)) + LINEF("#include \"../{0}/{0}_{1}_{2}_mark_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } LINE("") @@ -813,8 +817,11 @@ std::vector ZoneMarkTemplate::GetFilesToRenderOncePerAsset(con auto gameName = context.m_game; utils::MakeStringLowerCase(gameName); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_mark_db.h", assetName, gameName), TAG_HEADER); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_mark_db.cpp", assetName, gameName), TAG_SOURCE); + auto variantName = context.m_variant->m_name; + utils::MakeStringLowerCase(variantName); + + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_mark_db.h", assetName, gameName, variantName), TAG_HEADER); + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_mark_db.cpp", assetName, gameName, variantName), TAG_SOURCE); return files; } diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp index 02fb52f8..321ecd7e 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp @@ -32,7 +32,11 @@ namespace for (const auto* asset : m_env.m_assets) { - LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_write_db.h\"", m_env.m_game, Lower(asset->m_definition->m_name), Lower(m_env.m_game)) + LINEF("#include \"Game/{0}/XAssets/{1}/{1}_{2}_{3}_write_db.h\"", + m_env.m_game, + Lower(asset->m_definition->m_name), + Lower(m_env.m_game), + Lower(m_env.m_variant->m_name)) } } @@ -157,7 +161,7 @@ namespace { AddGeneratedHint(); - LINEF("#include \"{0}_{1}_write_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game)) + LINEF("#include \"{0}_{1}_{2}_write_db.h\"", Lower(m_env.m_asset->m_definition->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) if (!m_env.m_referenced_assets.empty()) { @@ -165,7 +169,7 @@ namespace LINE("// Referenced Assets:") for (const auto* type : m_env.m_referenced_assets) { - LINEF("#include \"../{0}/{0}_{1}_write_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game)) + LINEF("#include \"../{0}/{0}_{1}_{2}_write_db.h\"", Lower(type->m_type->m_name), Lower(m_env.m_game), Lower(m_env.m_variant->m_name)) } } @@ -1666,8 +1670,11 @@ std::vector ZoneWriteTemplate::GetFilesToRenderOncePerAsset(co auto gameName = context.m_game; utils::MakeStringLowerCase(gameName); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_write_db.h", assetName, gameName), TAG_HEADER); - files.emplace_back(std::format("XAssets/{0}/{0}_{1}_write_db.cpp", assetName, gameName), TAG_SOURCE); + auto variantName = context.m_variant->m_name; + utils::MakeStringLowerCase(variantName); + + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_write_db.h", assetName, gameName, variantName), TAG_HEADER); + files.emplace_back(std::format("XAssets/{0}/{0}_{1}_{2}_write_db.cpp", assetName, gameName, variantName), TAG_SOURCE); return files; }