diff options
author | Paul Gilbert | 2018-11-03 16:55:49 -0700 |
---|---|---|
committer | Paul Gilbert | 2018-12-08 19:05:59 -0800 |
commit | 60146c383d4b69920c6ba326611f9de66a513529 (patch) | |
tree | b7a249b88cc53e4736a069605fc0c310e7077a19 /engines/gargoyle/streams.h | |
parent | f91cdb19bf2f96ffcb50de7d796bc32fcda38f34 (diff) | |
download | scummvm-rg350-60146c383d4b69920c6ba326611f9de66a513529.tar.gz scummvm-rg350-60146c383d4b69920c6ba326611f9de66a513529.tar.bz2 scummvm-rg350-60146c383d4b69920c6ba326611f9de66a513529.zip |
GLK: Merge Files class into existing Streams class
Diffstat (limited to 'engines/gargoyle/streams.h')
-rw-r--r-- | engines/gargoyle/streams.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/engines/gargoyle/streams.h b/engines/gargoyle/streams.h index 08d97cb402..264190cc76 100644 --- a/engines/gargoyle/streams.h +++ b/engines/gargoyle/streams.h @@ -33,12 +33,74 @@ namespace Gargoyle { class Window; class Streams; +enum FileUsage { + fileusage_Data = 0x00, + fileusage_SavedGame = 0x01, + fileusage_Transcript = 0x02, + fileusage_InputRecord = 0x03, + fileusage_TypeMask = 0x0f, + + fileusage_TextMode = 0x100, + fileusage_BinaryMode = 0x000, +}; + +enum FileMode { + filemode_Write = 0x01, + filemode_Read = 0x02, + filemode_ReadWrite = 0x03, + filemode_WriteAppend = 0x05, +}; + +enum SeekMode { + seekmode_Start = 0, + seekmode_Current = 1, + seekmode_End = 2, +}; + struct StreamResult { uint32 _readCount; uint32 _writeCount; }; typedef StreamResult stream_result_t; + +/** + * File details + */ +struct FileReference { + glui32 _rock; + int _slotNumber; + Common::String _description; + Common::String _filename; + FileUsage _fileType; + bool _textMode; + gidispatch_rock_t _dispRock; + + /** + * Constructor + */ + FileReference() : _rock(0), _slotNumber(-1), _fileType(fileusage_Data), _textMode(false) {} + + /** + * Get savegame filename + */ + const Common::String getSaveName() const; + + /** + * Returns true if the given file exists + */ + bool exists() const; + + /** + * Delete the given file + */ + void deleteFile(); +}; + +typedef FileReference *frefid_t; +typedef Common::Array< Common::SharedPtr<FileReference> > FileRefArray; + + /** * Base class for streams */ @@ -342,6 +404,7 @@ class Streams { private: Stream *_streamList; Stream *_currentStream; + FileRefArray _fileReferences; private: /** * Adds a created stream to the list @@ -397,6 +460,42 @@ public: * Gets the current output stream */ Stream *getCurrent() const { return _currentStream; } + + /** + * Prompt for a savegame to load or save, and populate a file reference from the result + */ + frefid_t createByPrompt(glui32 usage, FileMode fmode, glui32 rock); + + /** + * Create a new file reference + */ + frefid_t createRef(int slot, const Common::String &desc, glui32 usage, glui32 rock); + + /** + * Create a new file reference + */ + frefid_t createRef(const Common::String &filename, glui32 usage, glui32 rock); + + /** + * Create a new temporary file reference + */ + frefid_t createTemp(glui32 usage, glui32 rock); + + /** + * Create a new file reference from an old one + */ + frefid_t createFromRef(frefid_t fref, glui32 usage, glui32 rock); + + /** + * Delete a file reference + */ + void deleteRef(frefid_t fref); + + /** + * Iterates to the next file reference following the specified one, + * or the first if null is passed + */ + frefid_t iterate(frefid_t fref, glui32 *rock); }; } // End of namespace Gargoyle |