diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/ConsoleSaveFileOriginal.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/ConsoleSaveFileOriginal.h')
| -rw-r--r-- | Minecraft.World/ConsoleSaveFileOriginal.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Minecraft.World/ConsoleSaveFileOriginal.h b/Minecraft.World/ConsoleSaveFileOriginal.h new file mode 100644 index 00000000..fd35aa1d --- /dev/null +++ b/Minecraft.World/ConsoleSaveFileOriginal.h @@ -0,0 +1,94 @@ +#pragma once + +#include "FileHeader.h" +#include "ConsoleSavePath.h" +#include "ConsoleSaveFile.h" + +class ConsoleSaveFileOriginal : public ConsoleSaveFile +{ +private: + FileHeader header; + + wstring m_fileName; + +// HANDLE hHeap; + static void *pvHeap; + static unsigned int pagesCommitted; +#ifdef _LARGE_WORLDS + static const unsigned int CSF_PAGE_SIZE = 64 * 1024; + static const unsigned int MAX_PAGE_COUNT = 32 * 1024; // 2GB virtual allocation +#elif defined(__PS3__) + static const unsigned int CSF_PAGE_SIZE = 1024 * 1024; + static const unsigned int MAX_PAGE_COUNT = 64; +#else + static const unsigned int CSF_PAGE_SIZE = 64 * 1024; + static const unsigned int MAX_PAGE_COUNT = 1024; +#endif + LPVOID pvSaveMem; + + CRITICAL_SECTION m_lock; + + void PrepareForWrite( FileEntry *file, DWORD nNumberOfBytesToWrite ); + void MoveDataBeyond(FileEntry *file, DWORD nNumberOfBytesToWrite); + +public: +#if (defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ || defined _DURANGO || defined _WINDOWS64) + static int SaveSaveDataCallback(LPVOID lpParam,bool bRes); +#endif + ConsoleSaveFileOriginal(const wstring &fileName, LPVOID pvSaveData = NULL, DWORD fileSize = 0, bool forceCleanSave = false, ESavePlatform plat = SAVE_FILE_PLATFORM_LOCAL); + virtual ~ConsoleSaveFileOriginal(); + + // 4J Stu - Initial implementation is intended to have a similar interface to the standard Xbox file access functions + + virtual FileEntry *createFile( const ConsoleSavePath &fileName ); + virtual void deleteFile( FileEntry *file ); + + virtual void setFilePointer(FileEntry *file,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod); + virtual BOOL writeFile( FileEntry *file, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten ); + virtual BOOL zeroFile(FileEntry *file, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten); + virtual BOOL readFile( FileEntry *file, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead ); + virtual BOOL closeHandle( FileEntry *file ); + + virtual void finalizeWrite(); + + virtual bool doesFileExist(ConsoleSavePath file); + + virtual void Flush(bool autosave, bool updateThumbnail = true); + +#ifndef _CONTENT_PACKAGE + virtual void DebugFlushToFile(void *compressedData = NULL, unsigned int compressedDataSize = 0); +#endif + virtual unsigned int getSizeOnDisk(); + + virtual wstring getFilename(); + + virtual vector<FileEntry *> *getFilesWithPrefix(const wstring &prefix); + virtual vector<FileEntry *> *getRegionFilesByDimension(unsigned int dimensionIndex); + +#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__) + virtual wstring getPlayerDataFilenameForLoad(const PlayerUID& pUID); + virtual wstring getPlayerDataFilenameForSave(const PlayerUID& pUID); + virtual vector<FileEntry *> *getValidPlayerDatFiles(); +#endif //__PS3__ + + virtual int getSaveVersion(); + virtual int getOriginalSaveVersion(); + + virtual void LockSaveAccess(); + virtual void ReleaseSaveAccess(); + + virtual ESavePlatform getSavePlatform(); + virtual bool isSaveEndianDifferent(); + virtual void setLocalPlatform(); + virtual void setPlatform(ESavePlatform plat); + virtual ByteOrder getSaveEndian(); + virtual ByteOrder getLocalEndian(); + virtual void setEndian(ByteOrder endian); + virtual bool isLocalEndianDifferent(ESavePlatform plat); + + virtual void ConvertRegionFile(File sourceFile); + virtual void ConvertToLocalPlatform(); + +protected: + virtual void *getWritePointer(FileEntry *file); +};
\ No newline at end of file |
