chore: respect previously set game when including additional zone files

This commit is contained in:
Jan
2024-10-05 11:19:41 +01:00
parent b156c7348a
commit 1861bd689c
8 changed files with 46 additions and 33 deletions

View File

@ -1,33 +1,34 @@
#pragma once
#include "Game/IGame.h"
#include "Parsing/IParserLineStream.h"
#include "ZoneDefinition.h"
#include <iostream>
#include <memory>
#include <optional>
class ZoneDefinitionInputStream
{
static constexpr const char* ZONE_CODE_GENERATOR_DEFINE_NAME = "__zonecodegenerator";
static constexpr const char* ZONE_CODE_GENERATOR_DEFINE_VALUE = "1";
public:
ZoneDefinitionInputStream(std::istream& stream, std::string fileName, bool verbose);
void SetPreviouslySetGame(GameId game);
std::unique_ptr<ZoneDefinition> ReadDefinition();
private:
bool OpenBaseStream(std::istream& stream);
void SetupStreamProxies();
std::string m_file_name;
bool m_verbose;
IParserLineStream* m_stream;
std::vector<std::unique_ptr<IParserLineStream>> m_open_streams;
bool OpenBaseStream(std::istream& stream);
void SetupStreamProxies();
public:
ZoneDefinitionInputStream(std::istream& stream, std::string fileName, bool verbose);
std::unique_ptr<ZoneDefinition> ReadDefinition();
std::optional<GameId> m_previously_set_game;
};
class ZoneDefinitionOutputStream
{
std::ostream& m_stream;
public:
explicit ZoneDefinitionOutputStream(std::ostream& stream);
@ -35,4 +36,7 @@ public:
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;
private:
std::ostream& m_stream;
};