mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 00:02:55 +00:00
Move unlinked gdt files to source_data and reference unlinked gdts in zone definition file
This commit is contained in:
parent
4f995751ce
commit
d9abf12b16
@ -17,7 +17,7 @@ public:
|
||||
static constexpr const char* DEFAULT_BASE_FOLDER_MOD_TOOLS = "..";
|
||||
static constexpr const char* DEFAULT_OUTPUT_FOLDER = "?base?/zone_out/?zone?";
|
||||
static constexpr const char* DEFAULT_ASSET_SEARCH_PATH = "?base?/raw;?base?/zone_raw/?zone?";
|
||||
static constexpr const char* DEFAULT_GDT_SEARCH_PATH = "?base?/source_data";
|
||||
static constexpr const char* DEFAULT_GDT_SEARCH_PATH = "?base?/source_data;?base?/zone_raw/?zone?/source_data";
|
||||
static constexpr const char* DEFAULT_SOURCE_SEARCH_PATH = "?base?/zone_source;?base?/zone_raw/?zone?/zone_source";
|
||||
|
||||
private:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "ZoneDefWriter.h"
|
||||
|
||||
void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, Zone* zone) const
|
||||
void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, const UnlinkerArgs* args, Zone* zone) const
|
||||
{
|
||||
ZoneDefinitionOutputStream out(stream);
|
||||
|
||||
@ -8,6 +8,13 @@ void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, Zone* zone) const
|
||||
out.WriteMetaData(META_DATA_KEY_GAME, zone->m_game->GetShortName());
|
||||
out.EmptyLine();
|
||||
|
||||
WriteMetaData(out, zone);
|
||||
WriteContent(out, zone);
|
||||
if(args->m_use_gdt)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "UnlinkerArgs.h"
|
||||
#include "Zone/Zone.h"
|
||||
#include "Zone/Definition/ZoneDefinitionStream.h"
|
||||
|
||||
@ -14,17 +15,18 @@ public:
|
||||
IZoneDefWriter& operator=(IZoneDefWriter&& other) noexcept = default;
|
||||
|
||||
virtual bool CanHandleZone(Zone* zone) const = 0;
|
||||
virtual void WriteZoneDef(std::ostream& stream, Zone* zone) const = 0;
|
||||
virtual void WriteZoneDef(std::ostream& stream, const UnlinkerArgs* args, Zone* zone) const = 0;
|
||||
};
|
||||
|
||||
class AbstractZoneDefWriter : public IZoneDefWriter
|
||||
{
|
||||
protected:
|
||||
static constexpr const char* META_DATA_KEY_GAME = "game";
|
||||
static constexpr const char* META_DATA_KEY_GDT = "gdt";
|
||||
|
||||
virtual void WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone) const = 0;
|
||||
virtual void WriteContent(ZoneDefinitionOutputStream& stream, Zone* zone) const = 0;
|
||||
virtual void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const = 0;
|
||||
virtual void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const = 0;
|
||||
|
||||
public:
|
||||
void WriteZoneDef(std::ostream& stream, Zone* zone) const override;
|
||||
void WriteZoneDef(std::ostream& stream, const UnlinkerArgs* args, Zone* zone) const override;
|
||||
};
|
@ -12,11 +12,11 @@ bool ZoneDefWriter::CanHandleZone(Zone* zone) const
|
||||
return zone->m_game == &g_GameIW4;
|
||||
}
|
||||
|
||||
void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone) const
|
||||
void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const
|
||||
{
|
||||
}
|
||||
|
||||
void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, Zone* zone) const
|
||||
void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const
|
||||
{
|
||||
const auto* pools = dynamic_cast<GameAssetPoolIW4*>(zone->m_pools.get());
|
||||
|
||||
|
@ -7,8 +7,8 @@ namespace IW4
|
||||
class ZoneDefWriter final : public AbstractZoneDefWriter
|
||||
{
|
||||
protected:
|
||||
void WriteMetaData(::ZoneDefinitionOutputStream& stream, ::Zone* zone) const override;
|
||||
void WriteContent(::ZoneDefinitionOutputStream& stream, ::Zone* zone) const override;
|
||||
void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const override;
|
||||
void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const override;
|
||||
|
||||
public:
|
||||
bool CanHandleZone(Zone* zone) const override;
|
||||
|
@ -54,10 +54,9 @@ void ZoneDefWriter::WriteKeyValuePair(ZoneDefinitionOutputStream& stream, KeyVal
|
||||
stream.WriteMetaData(str.str(), kvp->value);
|
||||
}
|
||||
|
||||
void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone) const
|
||||
void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const
|
||||
{
|
||||
auto* assetPoolT6 = dynamic_cast<GameAssetPoolT6*>(zone->m_pools.get());
|
||||
|
||||
if (assetPoolT6 && !assetPoolT6->m_key_value_pairs->m_asset_lookup.empty())
|
||||
{
|
||||
for (const auto* kvpAsset : *assetPoolT6->m_key_value_pairs)
|
||||
@ -73,7 +72,7 @@ void ZoneDefWriter::WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone
|
||||
}
|
||||
}
|
||||
|
||||
void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, Zone* zone) const
|
||||
void ZoneDefWriter::WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const
|
||||
{
|
||||
const auto* pools = dynamic_cast<GameAssetPoolT6*>(zone->m_pools.get());
|
||||
|
||||
|
@ -10,8 +10,8 @@ namespace T6
|
||||
static void WriteKeyValuePair(ZoneDefinitionOutputStream& stream, KeyValuePair* kvp);
|
||||
|
||||
protected:
|
||||
void WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone) const override;
|
||||
void WriteContent(ZoneDefinitionOutputStream& stream, Zone* zone) const override;
|
||||
void WriteMetaData(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const override;
|
||||
void WriteContent(ZoneDefinitionOutputStream& stream, const UnlinkerArgs* args, Zone* zone) const override;
|
||||
|
||||
public:
|
||||
bool CanHandleZone(Zone* zone) const override;
|
||||
|
@ -152,7 +152,7 @@ class Unlinker::Impl
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool WriteZoneDefinitionFile(Zone* zone, const fs::path& zoneDefinitionFileFolder)
|
||||
bool WriteZoneDefinitionFile(Zone* zone, const fs::path& zoneDefinitionFileFolder) const
|
||||
{
|
||||
auto zoneDefinitionFilePath(zoneDefinitionFileFolder);
|
||||
zoneDefinitionFilePath.append(zone->m_name);
|
||||
@ -170,7 +170,7 @@ class Unlinker::Impl
|
||||
{
|
||||
if (zoneDefWriter->CanHandleZone(zone))
|
||||
{
|
||||
zoneDefWriter->WriteZoneDef(zoneDefinitionFile, zone);
|
||||
zoneDefWriter->WriteZoneDef(zoneDefinitionFile, &m_args, zone);
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
@ -185,9 +185,13 @@ class Unlinker::Impl
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool OpenGdtFile(Zone* zone, const fs::path& zoneDefinitionFileFolder, std::ofstream& stream)
|
||||
static bool OpenGdtFile(Zone* zone, const fs::path& outputFolder, std::ofstream& stream)
|
||||
{
|
||||
auto gdtFilePath(zoneDefinitionFileFolder);
|
||||
auto gdtFilePath(outputFolder);
|
||||
gdtFilePath.append("source_data");
|
||||
|
||||
fs::create_directories(gdtFilePath);
|
||||
|
||||
gdtFilePath.append(zone->m_name);
|
||||
gdtFilePath.replace_extension(".gdt");
|
||||
|
||||
@ -232,7 +236,7 @@ class Unlinker::Impl
|
||||
|
||||
if (m_args.m_use_gdt)
|
||||
{
|
||||
if (!OpenGdtFile(zone, zoneDefinitionFileFolder, gdtStream))
|
||||
if (!OpenGdtFile(zone, outputFolderPath, gdtStream))
|
||||
return false;
|
||||
auto gdt = std::make_unique<GdtOutputStream>(gdtStream);
|
||||
gdt->BeginStream();
|
||||
|
Loading…
x
Reference in New Issue
Block a user