raze/source/common/compositesaveame.h

45 lines
959 B
C
Raw Normal View History

#pragma once
#include <assert.h>
#include "files.h"
#include "zstring.h"
#include "tarray.h"
#include "filesystem/resourcefile.h"
class CompositeSavegameWriter
{
FString filename;
TDeletingArray<BufferWriter*> subfiles;
TArray<FCompressedBuffer> subbuffers;
TArray<FString> subfilenames;
TArray<bool> isCompressed;
FCompressedBuffer CompressElement(BufferWriter* element, bool compress);
public:
void Clear()
{
for (auto& b : subbuffers) b.Clean();
isCompressed.Clear();
subfilenames.Clear();
2020-01-06 19:01:18 +00:00
subfiles.DeleteAndClear();
subbuffers.Clear();
filename = "";
}
void SetFileName(const char* fn)
{
filename = fn;
}
void SetFileName(const FString& fn)
{
filename = fn;
}
~CompositeSavegameWriter()
{
assert(subfiles.Size() == 0); // must be written out.
}
FileWriter& NewElement(const char* filename, bool compress = true);
void AddCompressedElement(const char* filename, FCompressedBuffer& buffer);
bool WriteToFile();
};