2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-07-04 14:50:00 +00:00

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
@@ -32,8 +32,8 @@
using namespace IW3;
ContentLoader::ContentLoader(Zone& zone)
: ContentLoaderBase(zone),
ContentLoader::ContentLoader(Zone& zone, ZoneInputStream& stream)
: ContentLoaderBase(zone, stream),
varXAsset(nullptr),
varScriptStringList(nullptr)
{
@@ -134,10 +134,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{};
+2 -3
View File
@@ -9,9 +9,8 @@ namespace IW3
class ContentLoader final : public ContentLoaderBase, public IContentLoadingEntryPoint
{
public:
explicit ContentLoader(Zone& zone);
void Load(ZoneInputStream& stream) override;
ContentLoader(Zone& zone, ZoneInputStream& stream);
void Load() override;
private:
void LoadScriptStringList(bool atStreamStart);
@@ -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;
}