mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 08:05:45 +00:00
Fix IW4 fastfile writer factory steps
This commit is contained in:
parent
54579deea4
commit
acc11a1609
@ -8,7 +8,9 @@
|
|||||||
#include "Game/IW4/ZoneConstantsIW4.h"
|
#include "Game/IW4/ZoneConstantsIW4.h"
|
||||||
#include "Writing/Processor/OutputProcessorDeflate.h"
|
#include "Writing/Processor/OutputProcessorDeflate.h"
|
||||||
#include "Writing/Steps/StepAddOutputProcessor.h"
|
#include "Writing/Steps/StepAddOutputProcessor.h"
|
||||||
|
#include "Writing/Steps/StepWriteTimestamp.h"
|
||||||
#include "Writing/Steps/StepWriteXBlockSizes.h"
|
#include "Writing/Steps/StepWriteXBlockSizes.h"
|
||||||
|
#include "Writing/Steps/StepWriteZero.h"
|
||||||
#include "Writing/Steps/StepWriteZoneContentToFile.h"
|
#include "Writing/Steps/StepWriteZoneContentToFile.h"
|
||||||
#include "Writing/Steps/StepWriteZoneContentToMemory.h"
|
#include "Writing/Steps/StepWriteZoneContentToMemory.h"
|
||||||
#include "Writing/Steps/StepWriteZoneHeader.h"
|
#include "Writing/Steps/StepWriteZoneHeader.h"
|
||||||
@ -78,6 +80,12 @@ public:
|
|||||||
// Write zone header
|
// Write zone header
|
||||||
m_writer->AddWritingStep(std::make_unique<StepWriteZoneHeader>(CreateHeaderForParams(isSecure, false)));
|
m_writer->AddWritingStep(std::make_unique<StepWriteZoneHeader>(CreateHeaderForParams(isSecure, false)));
|
||||||
|
|
||||||
|
// Write dummy byte that the game ignores as well. No clue what it means.
|
||||||
|
m_writer->AddWritingStep(std::make_unique<StepWriteZero>(1));
|
||||||
|
|
||||||
|
// Write timestamp
|
||||||
|
m_writer->AddWritingStep(std::make_unique<StepWriteTimestamp>());
|
||||||
|
|
||||||
m_writer->AddWritingStep(std::make_unique<StepAddOutputProcessor>(std::make_unique<OutputProcessorDeflate>()));
|
m_writer->AddWritingStep(std::make_unique<StepAddOutputProcessor>(std::make_unique<OutputProcessorDeflate>()));
|
||||||
|
|
||||||
// Start of the XFile struct
|
// Start of the XFile struct
|
||||||
|
15
src/ZoneWriting/Writing/Steps/StepWriteTimestamp.cpp
Normal file
15
src/ZoneWriting/Writing/Steps/StepWriteTimestamp.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "StepWriteTimestamp.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
StepWriteTimestamp::StepWriteTimestamp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void StepWriteTimestamp::PerformStep(ZoneWriter* zoneWriter, IWritingStream* stream)
|
||||||
|
{
|
||||||
|
// time_t is not guaranteed to be 64bit so cast is necessary
|
||||||
|
const auto time = static_cast<int64_t>(std::time(nullptr));
|
||||||
|
stream->Write(&time, sizeof(time));
|
||||||
|
}
|
10
src/ZoneWriting/Writing/Steps/StepWriteTimestamp.h
Normal file
10
src/ZoneWriting/Writing/Steps/StepWriteTimestamp.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Writing/IWritingStep.h"
|
||||||
|
|
||||||
|
class StepWriteTimestamp final : public IWritingStep
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StepWriteTimestamp();
|
||||||
|
|
||||||
|
void PerformStep(ZoneWriter* zoneWriter, IWritingStream* stream) override;
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user