diff --git a/src/Unlinker/Unlinker.cpp b/src/Unlinker/Unlinker.cpp index 977c1ad3..790e75c0 100644 --- a/src/Unlinker/Unlinker.cpp +++ b/src/Unlinker/Unlinker.cpp @@ -1,19 +1,17 @@ #include "Unlinker.h" #include "ContentLister/ContentPrinter.h" -#include "ContentLister/ZoneDefWriter.h" #include "IObjLoader.h" #include "IObjWriter.h" #include "ObjWriting.h" #include "SearchPath/IWD.h" #include "SearchPath/OutputPathFilesystem.h" -#include "SearchPath/SearchPathFilesystem.h" -#include "SearchPath/SearchPaths.h" #include "UnlinkerArgs.h" #include "UnlinkerPaths.h" #include "Utils/ClassUtils.h" #include "Utils/Logging/Log.h" #include "Utils/ObjFileStream.h" +#include "Zone/Definition/ZoneDefWriter.h" #include "ZoneLoading.h" #include @@ -21,7 +19,6 @@ #include #include #include -#include namespace fs = std::filesystem; @@ -54,12 +51,12 @@ public: } private: - _NODISCARD bool ShouldLoadObj() const + [[nodiscard]] bool ShouldLoadObj() const { return m_args.m_task != UnlinkerArgs::ProcessingTask::LIST && !m_args.m_skip_obj; } - bool WriteZoneDefinitionFile(const Zone& zone, const fs::path& zoneDefinitionFileFolder) const + [[nodiscard]] bool WriteZoneDefinitionFile(const Zone& zone, const fs::path& zoneDefinitionFileFolder) const { auto zoneDefinitionFilePath(zoneDefinitionFileFolder); zoneDefinitionFilePath.append(zone.m_name); @@ -73,7 +70,7 @@ private: } const auto* zoneDefWriter = IZoneDefWriter::GetZoneDefWriterForGame(zone.m_game_id); - zoneDefWriter->WriteZoneDef(zoneDefinitionFile, m_args, zone); + zoneDefWriter->WriteZoneDef(zoneDefinitionFile, zone, m_args.m_use_gdt); zoneDefinitionFile.close(); diff --git a/src/Unlinker/Game/IW3/ZoneDefWriterIW3.cpp b/src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.cpp similarity index 88% rename from src/Unlinker/Game/IW3/ZoneDefWriterIW3.cpp rename to src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.cpp index 3850cba7..a98caa82 100644 --- a/src/Unlinker/Game/IW3/ZoneDefWriterIW3.cpp +++ b/src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.cpp @@ -6,9 +6,9 @@ using namespace IW3; -void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const {} +void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const {} -void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* pools = dynamic_cast(zone.m_pools.get()); diff --git a/src/Unlinker/Game/IW3/ZoneDefWriterIW3.h b/src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.h similarity index 62% rename from src/Unlinker/Game/IW3/ZoneDefWriterIW3.h rename to src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.h index 3f378d9d..8bfe8f61 100644 --- a/src/Unlinker/Game/IW3/ZoneDefWriterIW3.h +++ b/src/ZoneCommon/Game/IW3/Zone/Definition/ZoneDefWriterIW3.h @@ -1,13 +1,13 @@ #pragma once -#include "ContentLister/ZoneDefWriter.h" +#include "Zone/Definition/ZoneDefWriter.h" namespace IW3 { class ZoneDefWriter final : public AbstractZoneDefWriter { protected: - void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; - void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; + void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; }; } // namespace IW3 diff --git a/src/Unlinker/Game/IW4/ZoneDefWriterIW4.cpp b/src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.cpp similarity index 88% rename from src/Unlinker/Game/IW4/ZoneDefWriterIW4.cpp rename to src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.cpp index 7e100945..6bd9cc93 100644 --- a/src/Unlinker/Game/IW4/ZoneDefWriterIW4.cpp +++ b/src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.cpp @@ -6,9 +6,9 @@ using namespace IW4; -void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const {} +void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const {} -void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* pools = dynamic_cast(zone.m_pools.get()); diff --git a/src/Unlinker/Game/IW4/ZoneDefWriterIW4.h b/src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.h similarity index 62% rename from src/Unlinker/Game/IW4/ZoneDefWriterIW4.h rename to src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.h index 83bf1642..e2f3bedc 100644 --- a/src/Unlinker/Game/IW4/ZoneDefWriterIW4.h +++ b/src/ZoneCommon/Game/IW4/Zone/Definition/ZoneDefWriterIW4.h @@ -1,13 +1,13 @@ #pragma once -#include "ContentLister/ZoneDefWriter.h" +#include "Zone/Definition/ZoneDefWriter.h" namespace IW4 { class ZoneDefWriter final : public AbstractZoneDefWriter { protected: - void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; - void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; + void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; }; } // namespace IW4 diff --git a/src/Unlinker/Game/IW5/ZoneDefWriterIW5.cpp b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp similarity index 88% rename from src/Unlinker/Game/IW5/ZoneDefWriterIW5.cpp rename to src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp index ff54d622..4678dc85 100644 --- a/src/Unlinker/Game/IW5/ZoneDefWriterIW5.cpp +++ b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.cpp @@ -6,9 +6,9 @@ using namespace IW5; -void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const {} +void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const {} -void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* pools = dynamic_cast(zone.m_pools.get()); diff --git a/src/Unlinker/Game/IW5/ZoneDefWriterIW5.h b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.h similarity index 62% rename from src/Unlinker/Game/IW5/ZoneDefWriterIW5.h rename to src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.h index fac80d00..29f75f75 100644 --- a/src/Unlinker/Game/IW5/ZoneDefWriterIW5.h +++ b/src/ZoneCommon/Game/IW5/Zone/Definition/ZoneDefWriterIW5.h @@ -1,13 +1,13 @@ #pragma once -#include "ContentLister/ZoneDefWriter.h" +#include "Zone/Definition/ZoneDefWriter.h" namespace IW5 { class ZoneDefWriter final : public AbstractZoneDefWriter { protected: - void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; - void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; + void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; }; } // namespace IW5 diff --git a/src/Unlinker/Game/T5/ZoneDefWriterT5.cpp b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp similarity index 88% rename from src/Unlinker/Game/T5/ZoneDefWriterT5.cpp rename to src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp index 5fa7774a..976f8798 100644 --- a/src/Unlinker/Game/T5/ZoneDefWriterT5.cpp +++ b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.cpp @@ -6,9 +6,9 @@ using namespace T5; -void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const {} +void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const {} -void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* pools = dynamic_cast(zone.m_pools.get()); diff --git a/src/Unlinker/Game/T5/ZoneDefWriterT5.h b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.h similarity index 62% rename from src/Unlinker/Game/T5/ZoneDefWriterT5.h rename to src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.h index 8b206436..7dfb85b4 100644 --- a/src/Unlinker/Game/T5/ZoneDefWriterT5.h +++ b/src/ZoneCommon/Game/T5/Zone/Definition/ZoneDefWriterT5.h @@ -1,13 +1,13 @@ #pragma once -#include "ContentLister/ZoneDefWriter.h" +#include "Zone/Definition/ZoneDefWriter.h" namespace T5 { class ZoneDefWriter final : public AbstractZoneDefWriter { protected: - void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; - void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; + void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; }; } // namespace T5 diff --git a/src/Unlinker/Game/T6/ZoneDefWriterT6.cpp b/src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.cpp similarity index 96% rename from src/Unlinker/Game/T6/ZoneDefWriterT6.cpp rename to src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.cpp index 5b50ed8d..4b59ebcc 100644 --- a/src/Unlinker/Game/T6/ZoneDefWriterT6.cpp +++ b/src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.cpp @@ -48,7 +48,7 @@ namespace } } // namespace -void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* assetPoolT6 = dynamic_cast(zone.m_pools.get()); if (assetPoolT6 && !assetPoolT6->m_key_value_pairs->m_asset_lookup.empty()) @@ -64,7 +64,7 @@ void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const Unli } } -void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const +void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const { const auto* pools = dynamic_cast(zone.m_pools.get()); diff --git a/src/Unlinker/Game/T6/ZoneDefWriterT6.h b/src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.h similarity index 62% rename from src/Unlinker/Game/T6/ZoneDefWriterT6.h rename to src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.h index 5af9672c..842a7dd9 100644 --- a/src/Unlinker/Game/T6/ZoneDefWriterT6.h +++ b/src/ZoneCommon/Game/T6/Zone/Definition/ZoneDefWriterT6.h @@ -1,13 +1,13 @@ #pragma once -#include "ContentLister/ZoneDefWriter.h" +#include "Zone/Definition/ZoneDefWriter.h" namespace T6 { class ZoneDefWriter final : public AbstractZoneDefWriter { protected: - void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; - void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; + void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const override; }; } // namespace T6 diff --git a/src/Unlinker/ContentLister/ZoneDefWriter.cpp b/src/ZoneCommon/Zone/Definition/ZoneDefWriter.cpp similarity index 72% rename from src/Unlinker/ContentLister/ZoneDefWriter.cpp rename to src/ZoneCommon/Zone/Definition/ZoneDefWriter.cpp index 367199e5..2c032afe 100644 --- a/src/Unlinker/ContentLister/ZoneDefWriter.cpp +++ b/src/ZoneCommon/Zone/Definition/ZoneDefWriter.cpp @@ -1,10 +1,10 @@ #include "ZoneDefWriter.h" -#include "Game/IW3/ZoneDefWriterIW3.h" -#include "Game/IW4/ZoneDefWriterIW4.h" -#include "Game/IW5/ZoneDefWriterIW5.h" -#include "Game/T5/ZoneDefWriterT5.h" -#include "Game/T6/ZoneDefWriterT6.h" +#include "Game/IW3/Zone/Definition/ZoneDefWriterIW3.h" +#include "Game/IW4/Zone/Definition/ZoneDefWriterIW4.h" +#include "Game/IW5/Zone/Definition/ZoneDefWriterIW5.h" +#include "Game/T5/Zone/Definition/ZoneDefWriterT5.h" +#include "Game/T6/Zone/Definition/ZoneDefWriterT6.h" #include @@ -25,7 +25,7 @@ const IZoneDefWriter* IZoneDefWriter::GetZoneDefWriterForGame(GameId game) return result; } -void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, const UnlinkerArgs& args, const Zone& zone) const +void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, const Zone& zone, const bool useGdt) const { ZoneDefinitionOutputStream out(stream); const auto* game = IGame::GetGameById(zone.m_game_id); @@ -34,13 +34,13 @@ void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, const UnlinkerArg out.WriteMetaData(META_DATA_KEY_GAME, game->GetShortName()); out.EmptyLine(); - if (args.m_use_gdt) + if (useGdt) { out.WriteComment("Load asset gdt files"); out.WriteMetaData(META_DATA_KEY_GDT, zone.m_name); out.EmptyLine(); } - WriteMetaData(out, args, zone); - WriteContent(out, args, zone); + WriteMetaData(out, zone); + WriteContent(out, zone); } diff --git a/src/Unlinker/ContentLister/ZoneDefWriter.h b/src/ZoneCommon/Zone/Definition/ZoneDefWriter.h similarity index 70% rename from src/Unlinker/ContentLister/ZoneDefWriter.h rename to src/ZoneCommon/Zone/Definition/ZoneDefWriter.h index 4cb7f6a4..1458c1c7 100644 --- a/src/Unlinker/ContentLister/ZoneDefWriter.h +++ b/src/ZoneCommon/Zone/Definition/ZoneDefWriter.h @@ -1,7 +1,7 @@ #pragma once -#include "UnlinkerArgs.h" #include "Zone/Definition/ZoneDefinitionStream.h" +#include "Zone/Zone.h" class IZoneDefWriter { @@ -13,7 +13,7 @@ public: IZoneDefWriter& operator=(const IZoneDefWriter& other) = default; IZoneDefWriter& operator=(IZoneDefWriter&& other) noexcept = default; - virtual void WriteZoneDef(std::ostream& stream, const UnlinkerArgs& args, const Zone& zone) const = 0; + virtual void WriteZoneDef(std::ostream& stream, const Zone& zone, bool useGdt) const = 0; static const IZoneDefWriter* GetZoneDefWriterForGame(GameId game); }; @@ -24,9 +24,9 @@ protected: static constexpr auto META_DATA_KEY_GAME = "game"; static constexpr auto META_DATA_KEY_GDT = "gdt"; - virtual void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const = 0; - virtual void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs& args, const Zone& zone) const = 0; + virtual void WriteMetaData(ZoneDefinitionOutputStream& stream, const Zone& zone) const = 0; + virtual void WriteContent(ZoneDefinitionOutputStream& stream, const Zone& zone) const = 0; public: - void WriteZoneDef(std::ostream& stream, const UnlinkerArgs& args, const Zone& zone) const override; + void WriteZoneDef(std::ostream& stream, const Zone& zone, bool useGdt) const override; };