#pragma once #include "FileHeader.h" #include "ConsoleSavePath.h" enum class SaveFileSeekOrigin { Begin, Current, End }; class ConsoleSaveFile { public: virtual ~ConsoleSaveFile() {}; virtual FileEntry *createFile( const ConsoleSavePath &fileName ) = 0; virtual void deleteFile( FileEntry *file ) = 0; virtual void setFilePointer( FileEntry *file, unsigned int distanceToMove, SaveFileSeekOrigin seekOrigin ) = 0; virtual bool writeFile( FileEntry *file, const void *lpBuffer, unsigned int nNumberOfBytesToWrite, unsigned int *lpNumberOfBytesWritten) = 0; virtual bool zeroFile(FileEntry *file, unsigned int nNumberOfBytesToWrite, unsigned int *lpNumberOfBytesWritten) = 0; virtual bool readFile( FileEntry *file, void *lpBuffer, unsigned int nNumberOfBytesToRead, unsigned int *lpNumberOfBytesRead ) = 0; virtual bool closeHandle( FileEntry *file ) = 0; virtual void finalizeWrite() = 0; virtual void tick() {}; virtual bool doesFileExist(ConsoleSavePath file) = 0; virtual void Flush(bool autosave, bool updateThumbnail = true) = 0; #ifndef _CONTENT_PACKAGE virtual void DebugFlushToFile(void *compressedData = NULL, unsigned int compressedDataSize = 0) = 0; #endif virtual unsigned int getSizeOnDisk() = 0; virtual std::wstring getFilename() = 0; virtual std::vector *getFilesWithPrefix(const std::wstring &prefix) = 0; virtual std::vector *getRegionFilesByDimension(unsigned int dimensionIndex) = 0; #if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__) virtual std::wstring getPlayerDataFilenameForLoad(const PlayerUID& pUID) = 0; virtual std::wstring getPlayerDataFilenameForSave(const PlayerUID& pUID) = 0; virtual std::vector *getValidPlayerDatFiles() = 0; #endif //__PS3__ virtual int getSaveVersion() = 0; virtual int getOriginalSaveVersion() = 0; virtual void LockSaveAccess() = 0; virtual void ReleaseSaveAccess() = 0; virtual ESavePlatform getSavePlatform() = 0; virtual bool isSaveEndianDifferent() = 0; virtual void setLocalPlatform() = 0; virtual void setPlatform(ESavePlatform plat) = 0; virtual ByteOrder getSaveEndian() = 0; virtual ByteOrder getLocalEndian() = 0; virtual void setEndian(ByteOrder endian) = 0; virtual void ConvertRegionFile(File sourceFile) = 0; virtual void ConvertToLocalPlatform() = 0; virtual void *getWritePointer(FileEntry *file) { return NULL; } };