chore: implement base skeleton for architecture independent zone loading

This commit is contained in:
Jan Laupetin
2025-05-01 17:10:34 +02:00
committed by Jan
parent 280f74d4dd
commit f6d7831e6e
30 changed files with 393 additions and 176 deletions

View File

@ -39,8 +39,8 @@
using namespace T5;
ContentLoader::ContentLoader(Zone& zone)
: ContentLoaderBase(zone),
ContentLoader::ContentLoader(Zone& zone, ZoneInputStream& stream)
: ContentLoaderBase(zone, stream),
varXAsset(nullptr),
varScriptStringList(nullptr)
{
@ -147,10 +147,8 @@ void ContentLoader::LoadXAssetArray(const bool atStreamStart, const size_t count
}
}
void ContentLoader::Load(ZoneInputStream& stream)
void ContentLoader::Load()
{
m_stream = &stream;
m_stream->PushBlock(XFILE_BLOCK_VIRTUAL);
XAssetList assetList{};

View File

@ -9,9 +9,8 @@ namespace T5
class ContentLoader final : public ContentLoaderBase, public IContentLoadingEntryPoint
{
public:
explicit ContentLoader(Zone& zone);
void Load(ZoneInputStream& stream) override;
explicit ContentLoader(Zone& zone, ZoneInputStream& stream);
void Load() override;
private:
void LoadScriptStringList(bool atStreamStart);

View File

@ -85,8 +85,14 @@ std::unique_ptr<ZoneLoader> ZoneLoaderFactory::CreateLoaderForHeader(ZoneHeader&
zoneLoader->AddLoadingStep(step::CreateStepAllocXBlocks());
// Start of the zone content
zoneLoader->AddLoadingStep(
step::CreateStepLoadZoneContent(std::make_unique<ContentLoader>(*zonePtr), ZoneConstants::OFFSET_BLOCK_BIT_COUNT, ZoneConstants::INSERT_BLOCK));
zoneLoader->AddLoadingStep(step::CreateStepLoadZoneContent(
[&zonePtr](ZoneInputStream& stream)
{
return std::make_unique<ContentLoader>(*zonePtr, stream);
},
32u,
ZoneConstants::OFFSET_BLOCK_BIT_COUNT,
ZoneConstants::INSERT_BLOCK));
return zoneLoader;
}