Restructure ZoneDefinitionWriting

This commit is contained in:
Jan
2021-03-08 17:28:24 +01:00
parent e6a91c0305
commit d96f813e73
18 changed files with 285 additions and 221 deletions

View File

@ -8,7 +8,7 @@ ContentPrinter::ContentPrinter(Zone* zone)
void ContentPrinter::PrintContent() const
{
const auto* pools = m_zone->m_pools.get();
printf("Zone '%s' (%s)\n", m_zone->m_name.c_str(), m_zone->m_game->GetName().c_str());
printf("Zone '%s' (%s)\n", m_zone->m_name.c_str(), m_zone->m_game->GetShortName().c_str());
puts("Content:");
for(const auto& asset : *pools)

View File

@ -1,29 +1,13 @@
#include "ZoneDefWriter.h"
const std::string AbstractZoneDefWriter::META_DATA_KEY_GAME = "game";
AbstractZoneDefWriter::AbstractZoneDefWriter(Zone* zone, std::ostream& stream)
: m_zone(zone),
m_stream(stream)
void AbstractZoneDefWriter::WriteZoneDef(std::ostream& stream, Zone* zone) const
{
}
ZoneDefinitionOutputStream out(stream);
void AbstractZoneDefWriter::EmptyLine() const
{
m_stream << "\n";
}
out.WriteComment(zone->m_game->GetFullName());
out.WriteMetaData(META_DATA_KEY_GAME, zone->m_game->GetShortName());
out.EmptyLine();
void AbstractZoneDefWriter::WriteComment(const std::string& comment) const
{
m_stream << "// " << comment << "\n";
}
void AbstractZoneDefWriter::WriteMetaData(const std::string& metaDataKey, const std::string& metaDataValue) const
{
m_stream << ">" << metaDataKey << "," << metaDataValue << "\n";
}
void AbstractZoneDefWriter::WriteEntry(const std::string& entryKey, const std::string& entryValue) const
{
m_stream << entryKey << "," << entryValue << "\n";
}
WriteMetaData(out, zone);
WriteContent(out, zone);
}

View File

@ -1,31 +1,30 @@
#pragma once
#include <ostream>
#include "Zone/Zone.h"
class AbstractZoneDefWriter
{
protected:
Zone* m_zone;
std::ostream& m_stream;
static const std::string META_DATA_KEY_GAME;
void EmptyLine() const;
void WriteComment(const std::string& comment) const;
void WriteMetaData(const std::string& metaDataKey, const std::string& metaDataValue) const;
void WriteEntry(const std::string& entryKey, const std::string& entryValue) const;
AbstractZoneDefWriter(Zone* zone, std::ostream& stream);
public:
virtual void WriteZoneDef() = 0;
};
#include "Zone/Definition/ZoneDefinitionStream.h"
class IZoneDefWriter
{
public:
IZoneDefWriter() = default;
virtual ~IZoneDefWriter() = default;
IZoneDefWriter(const IZoneDefWriter& other) = default;
IZoneDefWriter(IZoneDefWriter&& other) noexcept = default;
IZoneDefWriter& operator=(const IZoneDefWriter& other) = default;
IZoneDefWriter& operator=(IZoneDefWriter&& other) noexcept = default;
virtual bool CanHandleZone(Zone* zone) const = 0;
virtual void WriteZoneDef(Zone* zone, std::ostream& stream) const = 0;
virtual void WriteZoneDef(std::ostream& stream, Zone* zone) const = 0;
};
class AbstractZoneDefWriter : public IZoneDefWriter
{
protected:
static constexpr const char* META_DATA_KEY_GAME = "game";
virtual void WriteMetaData(ZoneDefinitionOutputStream& stream, Zone* zone) const = 0;
virtual void WriteContent(ZoneDefinitionOutputStream& stream, Zone* zone) const = 0;
public:
void WriteZoneDef(std::ostream& stream, Zone* zone) const override;
};