mirror of
https://github.com/DrBeef/Raze.git
synced 2024-12-15 15:11:01 +00:00
ba117554b0
Since the code is extremely volatile I changed the setup so that the save is a zip file with the regular snapshot plus all added data as separate entries. This allows compressing everything properly without savegame breaking interference. Blood does not yet load its savegames, need to check.
39 lines
755 B
C++
39 lines
755 B
C++
#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<FString> subfilenames;
|
|
TArray<bool> isCompressed;
|
|
|
|
FCompressedBuffer CompressElement(BufferWriter* element, bool compress);
|
|
public:
|
|
void Clear()
|
|
{
|
|
subfiles.Reset();
|
|
subfilenames.Reset();
|
|
isCompressed.Reset();
|
|
}
|
|
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);
|
|
bool WriteToFile();
|
|
};
|
|
|