diff options
author | Robert Göffringmann | 2008-03-03 00:41:59 +0000 |
---|---|---|
committer | Robert Göffringmann | 2008-03-03 00:41:59 +0000 |
commit | 3b27b9fa438611c3a05fcf2d07a3dfde6be192fa (patch) | |
tree | 8605c47d67b779fb33ce4dda3a64a7d3caecdb4d /backends/platform/ps2/savefile.h | |
parent | fc91de07dfdfe6bd29edadf739f324f30f5624d0 (diff) | |
download | scummvm-rg350-3b27b9fa438611c3a05fcf2d07a3dfde6be192fa.tar.gz scummvm-rg350-3b27b9fa438611c3a05fcf2d07a3dfde6be192fa.tar.bz2 scummvm-rg350-3b27b9fa438611c3a05fcf2d07a3dfde6be192fa.zip |
the ps2 changes from the 0.11.1 release, plus some bugfixes and cleanup.
svn-id: r31034
Diffstat (limited to 'backends/platform/ps2/savefile.h')
-rw-r--r-- | backends/platform/ps2/savefile.h | 116 |
1 files changed, 76 insertions, 40 deletions
diff --git a/backends/platform/ps2/savefile.h b/backends/platform/ps2/savefile.h index b6019192ae..4832b8c3fe 100644 --- a/backends/platform/ps2/savefile.h +++ b/backends/platform/ps2/savefile.h @@ -26,56 +26,92 @@ #ifndef __PS2_SAVEFILE__ #define __PS2_SAVEFILE__ -#include <libmc.h> -#include "common/savefile.h" - -class Gs2dScreen; -class OSystem_PS2; class McAccess; +class OSystem_PS2; +class Gs2dScreen; +class Ps2SaveFileManager; -class Ps2SaveFileManager : public Common::SaveFileManager { -public: - Ps2SaveFileManager(OSystem_PS2 *system, Gs2dScreen *screen); - virtual ~Ps2SaveFileManager(); - - virtual Common::InSaveFile *openForLoading(const char *filename); - virtual Common::OutSaveFile *openForSaving(const char *filename); - virtual Common::StringList listSavefiles(const char *pattern); - - void writeSaveNonblocking(char *name, void *buf, uint32 size); - void saveThread(void); - void quit(void); +#include "common/scummsys.h" +#include "common/savefile.h" +#include "backends/platform/ps2/rawsavefile.h" +#include "backends/platform/ps2/fileio.h" +class UclOutSaveFile : public Common::OutSaveFile, public RawWriteFile { +public: + UclOutSaveFile(const char *filename, OSystem_PS2 *system, Gs2dScreen *screen, McAccess *mc); + virtual ~UclOutSaveFile(void); + virtual uint32 write(const void *ptr, uint32 size); + virtual void flush(void); + virtual bool ioFailed(void) const; + virtual void clearIOFailed(void); private: - bool setupIcon(const char *dest, const char *ico, const char *descr1, const char *descr2); - - bool mcReadyForDir(const char *dir); + OSystem_PS2 *_system; + Gs2dScreen *_screen; - void checkMainDirectory(void); - void splitPath(const char *fileName, char *dir, char *name); - uint16 *decompressIconData(uint16 *size); + bool _ioFailed, _wasFlushed; + char _fileName[128]; +}; +class UclInSaveFile : public Common::InSaveFile, public RawReadFile { +public: + UclInSaveFile(const char *filename, Gs2dScreen *screen, McAccess *mc); + virtual ~UclInSaveFile(void); + virtual bool eos(void) const; + virtual uint32 read(void *ptr, uint32 size); + virtual bool ioFailed(void) const; + virtual void clearIOFailed(void); + virtual void skip(uint32 offset); + + virtual uint32 pos(void) const; + virtual uint32 size(void) const; + virtual void seek(int pos, int whence = SEEK_SET); +private: Gs2dScreen *_screen; - OSystem_PS2 *_system; - McAccess *_mc; + bool _ioFailed; +}; - int _autoSaveTid; - int _autoSaveSignal; - void *_autoSaveStack; - volatile bool _systemQuit; - uint8 *_autoSaveBuf; - uint32 _autoSaveSize; - char _autoSaveName[256]; +class AutoSaveFile : public Common::OutSaveFile { +public: + AutoSaveFile(Ps2SaveFileManager *saveMan, const char *filename); + ~AutoSaveFile(void); + virtual uint32 write(const void *ptr, uint32 size); + virtual void flush(void) {} + virtual bool ioFailed(void) { return false; }; + virtual void clearIOFailed(void) {} +private: + Ps2SaveFileManager *_saveMan; + char _fileName[256]; + uint8 *_buf; + uint32 _bufSize, _bufPos; +}; + +// Glue-classes, not only do we have to provide MC access through the savefilemanager, but also using +// posix file i/o, since that's what's the configmanager expects for storing the scummvm.ini - mcTable *_mcDirList; - int _mcEntries; - char _mcDirName[256]; - bool _mcNeedsUpdate, _mcPresent; - uint32 _mcCheckTime; +class Ps2McReadFile : public RawReadFile, public Ps2File { +public: + Ps2McReadFile(Ps2SaveFileManager *saveMan); + virtual ~Ps2McReadFile(void); + virtual bool open(const char *name); + virtual uint32 read(void *dest, uint32 len); + virtual uint32 write(const void *src, uint32 len); + virtual uint32 tell(void); + virtual uint32 size(void); + virtual int seek(int32 offset, int origin); + virtual bool eof(void); +}; - static const uint8 _rleIcoData[14018]; - static const iconIVECTOR _bgcolor[4]; - static const iconFVECTOR _lightdir[3], _lightcol[3], _ambient; +class Ps2McWriteFile : public RawWriteFile, public Ps2File { +public: + Ps2McWriteFile(Ps2SaveFileManager *saveMan); + virtual ~Ps2McWriteFile(void); + virtual bool open(const char *name); + virtual uint32 read(void *dest, uint32 len); + virtual uint32 write(const void *src, uint32 len); + virtual uint32 tell(void); + virtual uint32 size(void); + virtual int seek(int32 offset, int origin); + virtual bool eof(void); }; #endif // __PS2_SAVEFILE__ |