mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
Fix IW4 zone loading
This commit is contained in:
parent
31407e62e2
commit
590a108a1b
@ -137,8 +137,8 @@ class ZoneLoaderFactory::Impl
|
|||||||
auto* masterBlockHashesPtr = masterBlockHashes.get();
|
auto* masterBlockHashesPtr = masterBlockHashes.get();
|
||||||
zoneLoader->AddLoadingStep(std::move(masterBlockHashes));
|
zoneLoader->AddLoadingStep(std::move(masterBlockHashes));
|
||||||
|
|
||||||
zoneLoader->AddLoadingStep(std::make_unique<StepRemoveProcessor>(subHeaderCapturePtr));
|
|
||||||
zoneLoader->AddLoadingStep(std::make_unique<StepVerifyHash>(std::unique_ptr<IHashFunction>(Crypto::CreateSHA256()), 0, subHeaderHashPtr, subHeaderCapturePtr));
|
zoneLoader->AddLoadingStep(std::make_unique<StepVerifyHash>(std::unique_ptr<IHashFunction>(Crypto::CreateSHA256()), 0, subHeaderHashPtr, subHeaderCapturePtr));
|
||||||
|
zoneLoader->AddLoadingStep(std::make_unique<StepRemoveProcessor>(subHeaderCapturePtr));
|
||||||
|
|
||||||
// Skip the rest of the first chunk
|
// Skip the rest of the first chunk
|
||||||
zoneLoader->AddLoadingStep(std::make_unique<StepSkipBytes>(ZoneConstants::AUTHED_CHUNK_SIZE - sizeof(DB_AuthHeader)));
|
zoneLoader->AddLoadingStep(std::make_unique<StepSkipBytes>(ZoneConstants::AUTHED_CHUNK_SIZE - sizeof(DB_AuthHeader)));
|
||||||
|
@ -2,25 +2,14 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
StepRemoveProcessor::StepRemoveProcessor(StreamProcessor* streamProcessor)
|
StepRemoveProcessor::StepRemoveProcessor(StreamProcessor* streamProcessor)
|
||||||
: m_stream_processor(streamProcessor),
|
: m_stream_processor(streamProcessor)
|
||||||
m_removed(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
StepRemoveProcessor::~StepRemoveProcessor()
|
|
||||||
{
|
|
||||||
if(m_removed)
|
|
||||||
{
|
|
||||||
delete m_stream_processor;
|
|
||||||
m_stream_processor = nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StepRemoveProcessor::PerformStep(ZoneLoader* zoneLoader, ILoadingStream* stream)
|
void StepRemoveProcessor::PerformStep(ZoneLoader* zoneLoader, ILoadingStream* stream)
|
||||||
{
|
{
|
||||||
assert(zoneLoader != nullptr);
|
assert(zoneLoader != nullptr);
|
||||||
assert(m_stream_processor != nullptr);
|
assert(m_stream_processor != nullptr);
|
||||||
|
|
||||||
zoneLoader->RemoveStreamProcessor(m_stream_processor);
|
zoneLoader->RemoveStreamProcessor(m_stream_processor);
|
||||||
m_removed = true;
|
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,9 @@
|
|||||||
class StepRemoveProcessor final : public ILoadingStep
|
class StepRemoveProcessor final : public ILoadingStep
|
||||||
{
|
{
|
||||||
StreamProcessor* m_stream_processor;
|
StreamProcessor* m_stream_processor;
|
||||||
bool m_removed;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit StepRemoveProcessor(StreamProcessor* streamProcessor);
|
explicit StepRemoveProcessor(StreamProcessor* streamProcessor);
|
||||||
~StepRemoveProcessor() override;
|
|
||||||
|
|
||||||
void PerformStep(ZoneLoader* zoneLoader, ILoadingStream* stream) override;
|
void PerformStep(ZoneLoader* zoneLoader, ILoadingStream* stream) override;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user