Jan 4f995751ce Add load argument to unlinker to load zones before trying to unlink specified zones
this allows to make sure certain ipaks are loaded before dumping
2021-03-27 16:45:30 +01:00

38 lines
891 B
C++

#pragma once
#include "ILoadingStep.h"
#include "Zone/Zone.h"
#include "Zone/XBlock.h"
#include "StreamProcessor.h"
#include <vector>
#include <istream>
#include <memory>
class ILoadingStep;
class ZoneLoader
{
std::vector<std::unique_ptr<ILoadingStep>> m_steps;
std::vector<std::unique_ptr<StreamProcessor>> m_processors;
bool m_processor_chain_dirty;
std::unique_ptr<Zone> m_zone;
ILoadingStream* BuildLoadingChain(ILoadingStream* rootStream);
public:
std::vector<XBlock*> m_blocks;
explicit ZoneLoader(std::unique_ptr<Zone> zone);
void AddXBlock(std::unique_ptr<XBlock> block);
void AddLoadingStep(std::unique_ptr<ILoadingStep> step);
void AddStreamProcessor(std::unique_ptr<StreamProcessor> streamProcessor);
void RemoveStreamProcessor(StreamProcessor* streamProcessor);
std::unique_ptr<Zone> LoadZone(std::istream& stream);
};