From 00b3322cb2aa5e4156b5f1a041104a8d7824355f Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 25 Dec 2019 14:07:24 +0100 Subject: [PATCH] ZoneLoading: Extract all obj dumping relevant parts to ObjWriting component --- premake5.lua | 5 +++ src/ObjLoading.lua | 44 +++++++++++++++++++ src/ObjWriting.lua | 44 +++++++++++++++++++ .../Dumping/AbstractAssetDumper.h | 0 .../Dumping/IAssetDumper.h | 0 .../Dumping/IZoneDumper.h | 0 .../Dumping/Localize/StringFileDumper.cpp | 0 .../Dumping/Localize/StringFileDumper.h | 0 .../AssetDumpers/AssetDumperLocalizeEntry.cpp | 0 .../AssetDumpers/AssetDumperLocalizeEntry.h | 0 .../Game/T6/AssetDumpers/AssetDumperQdb.cpp | 0 .../Game/T6/AssetDumpers/AssetDumperQdb.h | 0 .../T6/AssetDumpers/AssetDumperRawFile.cpp | 0 .../Game/T6/AssetDumpers/AssetDumperRawFile.h | 0 .../AssetDumperScriptParseTree.cpp | 0 .../AssetDumpers/AssetDumperScriptParseTree.h | 0 .../Game/T6/AssetDumpers/AssetDumperSlug.cpp | 0 .../Game/T6/AssetDumpers/AssetDumperSlug.h | 0 .../AssetDumpers/AssetDumperStringTable.cpp | 0 .../T6/AssetDumpers/AssetDumperStringTable.h | 0 .../Game/T6/ZoneDumperT6.cpp | 0 .../Game/T6/ZoneDumperT6.h | 0 src/ObjWriting/ObjWriting.cpp | 32 ++++++++++++++ src/ObjWriting/ObjWriting.h | 12 +++++ src/Unlinker.lua | 2 + src/Unlinker/main.cpp | 6 ++- src/ZoneLoading/ZoneLoading.cpp | 32 -------------- src/ZoneLoading/ZoneLoading.h | 3 -- 28 files changed, 143 insertions(+), 37 deletions(-) create mode 100644 src/ObjLoading.lua create mode 100644 src/ObjWriting.lua rename src/{ZoneLoading => ObjWriting}/Dumping/AbstractAssetDumper.h (100%) rename src/{ZoneLoading => ObjWriting}/Dumping/IAssetDumper.h (100%) rename src/{ZoneLoading => ObjWriting}/Dumping/IZoneDumper.h (100%) rename src/{ZoneLoading => ObjWriting}/Dumping/Localize/StringFileDumper.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Dumping/Localize/StringFileDumper.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperQdb.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperQdb.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperRawFile.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperRawFile.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperScriptParseTree.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperScriptParseTree.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperSlug.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperSlug.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperStringTable.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/AssetDumpers/AssetDumperStringTable.h (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/ZoneDumperT6.cpp (100%) rename src/{ZoneLoading => ObjWriting}/Game/T6/ZoneDumperT6.h (100%) create mode 100644 src/ObjWriting/ObjWriting.cpp create mode 100644 src/ObjWriting/ObjWriting.h diff --git a/premake5.lua b/premake5.lua index 67addca4..f84e3c4b 100644 --- a/premake5.lua +++ b/premake5.lua @@ -100,6 +100,9 @@ include "src/ZoneCodeGenerator.lua" include "src/ZoneCommon.lua" include "src/ZoneLoading.lua" include "src/ZoneWriting.lua" +include "src/ZoneCommon.lua" +include "src/ObjLoading.lua" +include "src/ObjWriting.lua" -- Components group: All projects assist or are part of a tool group "Components" @@ -110,6 +113,8 @@ group "Components" ZoneCommon:project() ZoneLoading:project() ZoneWriting:project() + ObjLoading:project() + ObjWriting:project() group "" -- Tools group: All projects that compile into the final tools diff --git a/src/ObjLoading.lua b/src/ObjLoading.lua new file mode 100644 index 00000000..6e1f6116 --- /dev/null +++ b/src/ObjLoading.lua @@ -0,0 +1,44 @@ +ObjLoading = {} + +function ObjLoading:include() + ZoneCommon:include() + includedirs { + path.join(ProjectFolder(), "ObjLoading") + } +end + +function ObjLoading:link() + Utils:link() + ZoneCommon:link() + links { + "ObjLoading" + } +end + +function ObjLoading:use() + +end + +function ObjLoading:project() + local folder = ProjectFolder(); + + project "ObjLoading" + targetdir(TargetDirectoryLib) + location "%{wks.location}/src/%{prj.name}" + kind "StaticLib" + language "C++" + + files { + path.join(folder, "ObjLoading/**.h"), + path.join(folder, "ObjLoading/**.cpp") + } + + vpaths { + ["*"] = { + path.join(folder, "ObjLoading") + } + } + + self:include() + Utils:include() +end diff --git a/src/ObjWriting.lua b/src/ObjWriting.lua new file mode 100644 index 00000000..91961e9a --- /dev/null +++ b/src/ObjWriting.lua @@ -0,0 +1,44 @@ +ObjWriting = {} + +function ObjWriting:include() + ZoneCommon:include() + includedirs { + path.join(ProjectFolder(), "ObjWriting") + } +end + +function ObjWriting:link() + Utils:link() + ZoneCommon:link() + links { + "ObjWriting" + } +end + +function ObjWriting:use() + +end + +function ObjWriting:project() + local folder = ProjectFolder(); + + project "ObjWriting" + targetdir(TargetDirectoryLib) + location "%{wks.location}/src/%{prj.name}" + kind "StaticLib" + language "C++" + + files { + path.join(folder, "ObjWriting/**.h"), + path.join(folder, "ObjWriting/**.cpp") + } + + vpaths { + ["*"] = { + path.join(folder, "ObjWriting") + } + } + + self:include() + Utils:include() +end diff --git a/src/ZoneLoading/Dumping/AbstractAssetDumper.h b/src/ObjWriting/Dumping/AbstractAssetDumper.h similarity index 100% rename from src/ZoneLoading/Dumping/AbstractAssetDumper.h rename to src/ObjWriting/Dumping/AbstractAssetDumper.h diff --git a/src/ZoneLoading/Dumping/IAssetDumper.h b/src/ObjWriting/Dumping/IAssetDumper.h similarity index 100% rename from src/ZoneLoading/Dumping/IAssetDumper.h rename to src/ObjWriting/Dumping/IAssetDumper.h diff --git a/src/ZoneLoading/Dumping/IZoneDumper.h b/src/ObjWriting/Dumping/IZoneDumper.h similarity index 100% rename from src/ZoneLoading/Dumping/IZoneDumper.h rename to src/ObjWriting/Dumping/IZoneDumper.h diff --git a/src/ZoneLoading/Dumping/Localize/StringFileDumper.cpp b/src/ObjWriting/Dumping/Localize/StringFileDumper.cpp similarity index 100% rename from src/ZoneLoading/Dumping/Localize/StringFileDumper.cpp rename to src/ObjWriting/Dumping/Localize/StringFileDumper.cpp diff --git a/src/ZoneLoading/Dumping/Localize/StringFileDumper.h b/src/ObjWriting/Dumping/Localize/StringFileDumper.h similarity index 100% rename from src/ZoneLoading/Dumping/Localize/StringFileDumper.h rename to src/ObjWriting/Dumping/Localize/StringFileDumper.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLocalizeEntry.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperQdb.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperQdb.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperQdb.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperQdb.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperQdb.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperQdb.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperQdb.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperQdb.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperRawFile.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperRawFile.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperRawFile.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperRawFile.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperRawFile.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperRawFile.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperRawFile.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperRawFile.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperScriptParseTree.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperScriptParseTree.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperScriptParseTree.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperScriptParseTree.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperScriptParseTree.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperScriptParseTree.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperScriptParseTree.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperScriptParseTree.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperSlug.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperSlug.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperSlug.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperSlug.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperSlug.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperSlug.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperSlug.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperSlug.h diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperStringTable.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperStringTable.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperStringTable.cpp rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperStringTable.cpp diff --git a/src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperStringTable.h b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperStringTable.h similarity index 100% rename from src/ZoneLoading/Game/T6/AssetDumpers/AssetDumperStringTable.h rename to src/ObjWriting/Game/T6/AssetDumpers/AssetDumperStringTable.h diff --git a/src/ZoneLoading/Game/T6/ZoneDumperT6.cpp b/src/ObjWriting/Game/T6/ZoneDumperT6.cpp similarity index 100% rename from src/ZoneLoading/Game/T6/ZoneDumperT6.cpp rename to src/ObjWriting/Game/T6/ZoneDumperT6.cpp diff --git a/src/ZoneLoading/Game/T6/ZoneDumperT6.h b/src/ObjWriting/Game/T6/ZoneDumperT6.h similarity index 100% rename from src/ZoneLoading/Game/T6/ZoneDumperT6.h rename to src/ObjWriting/Game/T6/ZoneDumperT6.h diff --git a/src/ObjWriting/ObjWriting.cpp b/src/ObjWriting/ObjWriting.cpp new file mode 100644 index 00000000..780db7b2 --- /dev/null +++ b/src/ObjWriting/ObjWriting.cpp @@ -0,0 +1,32 @@ +#include "ObjWriting.h" +#include "Dumping/IZoneDumper.h" +#include "Game/T6/ZoneDumperT6.h" + +IZoneDumper* zoneDumper[] +{ + new ZoneDumperT6() +}; + +bool ObjWriting::DumpZone(Zone* zone, const std::string& basePath) +{ + for (auto dumper : zoneDumper) + { + if (dumper->CanHandleZone(zone)) + { + if (dumper->DumpZone(zone, basePath)) + { + return true; + } + + printf("Dumper for zone '%s' failed!\n", zone->m_name.c_str()); + return false; + } + } + + return false; +} + +bool ObjWriting::WriteZoneDefinition(Zone* zone, FileAPI::File* file, bool minimalistic) +{ + return file->Printf("// %s", "Insert zone definition here") > 0; +} \ No newline at end of file diff --git a/src/ObjWriting/ObjWriting.h b/src/ObjWriting/ObjWriting.h new file mode 100644 index 00000000..3f1386ed --- /dev/null +++ b/src/ObjWriting/ObjWriting.h @@ -0,0 +1,12 @@ +#pragma once + +#include "Zone/Zone.h" +#include "Utils/FileAPI.h" +#include + +class ObjWriting +{ +public: + static bool DumpZone(Zone* zone, const std::string& basePath); + static bool WriteZoneDefinition(Zone* zone, FileAPI::File* file, bool minimalistic); +}; diff --git a/src/Unlinker.lua b/src/Unlinker.lua index 361ba609..921dbe7e 100644 --- a/src/Unlinker.lua +++ b/src/Unlinker.lua @@ -31,7 +31,9 @@ function Unlinker:project() self:include() Utils:include() ZoneLoading:include() + ObjWriting:include() Utils:link() ZoneLoading:link() + ObjWriting:link() end diff --git a/src/Unlinker/main.cpp b/src/Unlinker/main.cpp index f4b011e3..79118e95 100644 --- a/src/Unlinker/main.cpp +++ b/src/Unlinker/main.cpp @@ -1,8 +1,10 @@ #include "Utils/Arguments/ArgumentParser.h" #include "Utils/Arguments/UsageInformation.h" #include "ZoneLoading.h" +#include "ObjWriting.h" #include "ContentPrinter.h" #include "Utils/PathUtils.h" +#include "Utils/FileAPI.h" #include #include @@ -96,8 +98,8 @@ bool HandleZone(Zone* zone, ArgumentParser* argumentParser) if (zoneDefinitionFile.IsOpen()) { - ZoneLoading::WriteZoneDefinition(zone, &zoneDefinitionFile, minimalisticZoneDefinition); - ZoneLoading::DumpZone(zone, outputFolderPath); + ObjWriting::WriteZoneDefinition(zone, &zoneDefinitionFile, minimalisticZoneDefinition); + ObjWriting::DumpZone(zone, outputFolderPath); } else { diff --git a/src/ZoneLoading/ZoneLoading.cpp b/src/ZoneLoading/ZoneLoading.cpp index 9968b7f6..e37a116b 100644 --- a/src/ZoneLoading/ZoneLoading.cpp +++ b/src/ZoneLoading/ZoneLoading.cpp @@ -1,20 +1,12 @@ #include "ZoneLoading.h" #include "Utils/PathUtils.h" -#include "Dumping/IZoneDumper.h" - #include "Game/T6/ZoneLoaderFactoryT6.h" -#include "Game/T6/ZoneDumperT6.h" IZoneLoaderFactory* zoneLoaderFactories[] { new ZoneLoaderFactoryT6() }; -IZoneDumper* zoneDumper[] -{ - new ZoneDumperT6() -}; - Zone* ZoneLoading::LoadZone(const std::string& path) { std::string zoneName = utils::Path::GetFilenameWithoutExtension(path); @@ -48,28 +40,4 @@ Zone* ZoneLoading::LoadZone(const std::string& path) file.Close(); return loadedZone; -} - -bool ZoneLoading::DumpZone(Zone* zone, const std::string& basePath) -{ - for(auto dumper : zoneDumper) - { - if(dumper->CanHandleZone(zone)) - { - if(dumper->DumpZone(zone, basePath)) - { - return true; - } - - printf("Dumper for zone '%s' failed!\n", zone->m_name.c_str()); - return false; - } - } - - return false; -} - -bool ZoneLoading::WriteZoneDefinition(Zone* zone, FileAPI::File* file, bool minimalistic) -{ - return file->Printf("// %s", "Insert zone definition here") > 0; } \ No newline at end of file diff --git a/src/ZoneLoading/ZoneLoading.h b/src/ZoneLoading/ZoneLoading.h index 68e55938..293bb4b0 100644 --- a/src/ZoneLoading/ZoneLoading.h +++ b/src/ZoneLoading/ZoneLoading.h @@ -1,12 +1,9 @@ #pragma once #include "Zone/Zone.h" #include -#include "Utils/FileAPI.h" class ZoneLoading { public: static Zone* LoadZone(const std::string& path); - static bool DumpZone(Zone* zone, const std::string& basePath); - static bool WriteZoneDefinition(Zone* zone, FileAPI::File* file, bool minimalistic); };