[Scummvm-cvs-logs] SF.net SVN: scummvm:[33132] residual/trunk/engine
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Sun Jul 20 17:53:15 CEST 2008
Revision: 33132
http://scummvm.svn.sourceforge.net/scummvm/?rev=33132&view=rev
Author: aquadran
Date: 2008-07-20 15:53:14 +0000 (Sun, 20 Jul 2008)
Log Message:
-----------
use common savefilemanager for savegame.cpp code
Modified Paths:
--------------
residual/trunk/engine/savegame.cpp
residual/trunk/engine/savegame.h
Modified: residual/trunk/engine/savegame.cpp
===================================================================
--- residual/trunk/engine/savegame.cpp 2008-07-20 15:42:52 UTC (rev 33131)
+++ residual/trunk/engine/savegame.cpp 2008-07-20 15:53:14 UTC (rev 33132)
@@ -38,27 +38,24 @@
SaveGame::SaveGame(const char *filename, bool saving) :
_saving(saving), _currentSection(0) {
if (_saving) {
- uint32 tag = SAVEGAME_HEADERTAG;
- uint32 version = SAVEGAME_VERSION;
-
- _fileHandle = gzopen(filename, "wb");
- if (_fileHandle == NULL) {
+ _outSaveFile = g_saveFileMan->openForSaving(filename);
+ if (!_outSaveFile) {
warning("SaveGame::SaveGame() Error creating savegame file");
return;
}
- gzwrite(_fileHandle, &tag, 4);
- gzwrite(_fileHandle, &version, 4);
+ _outSaveFile->writeUint32LE(SAVEGAME_HEADERTAG);
+ _outSaveFile->writeUint32LE(SAVEGAME_VERSION);
} else {
uint32 tag, version;
-
- _fileHandle = gzopen(filename, "rb");
- if (_fileHandle == NULL) {
+
+ _inSaveFile = g_saveFileMan->openForLoading(filename);
+ if (!_inSaveFile) {
warning("SaveGame::SaveGame() Error opening savegame file");
return;
}
- gzread(_fileHandle, &tag, 4);
+ tag = _inSaveFile->readUint32LE();
assert(tag == SAVEGAME_HEADERTAG);
- gzread(_fileHandle, &version, 4);
+ version = _inSaveFile->readUint32LE();
assert(version == SAVEGAME_VERSION);
}
}
@@ -66,8 +63,14 @@
SaveGame::~SaveGame() {
uint32 tag = SAVEGAME_FOOTERTAG;
- gzwrite(_fileHandle, &tag, 4);
- gzclose(_fileHandle);
+ if (_saving) {
+ _outSaveFile->writeUint32LE(SAVEGAME_FOOTERTAG);
+ _outSaveFile->finalize();
+ if (_outSaveFile->ioFailed())
+ warning("SaveGame::~SaveGame()Can't write file. (Disk full?)");
+ delete _outSaveFile;
+ } else
+ delete _inSaveFile;
}
uint32 SaveGame::beginSection(uint32 sectionTag) {
@@ -75,18 +78,18 @@
error("Tried to begin a new save game section with ending old section!");
_currentSection = sectionTag;
_sectionSize = 0;
- _sectionBuffer = new char[_sectionSize];
+ _sectionBuffer = (byte *)malloc(_sectionSize);
if (!_saving) {
uint32 tag = 0;
while (tag != sectionTag) {
- delete[] _sectionBuffer;
- gzread(_fileHandle, &tag, sizeof(uint32));
+ free(_sectionBuffer);
+ tag = _inSaveFile->readUint32LE();
if (tag == SAVEGAME_FOOTERTAG)
error("Unable to find requested section of savegame!");
- gzread(_fileHandle, &_sectionSize, sizeof(uint32));
- _sectionBuffer = new char[_sectionSize];
- gzread(_fileHandle, _sectionBuffer, _sectionSize);
+ _sectionSize = _inSaveFile->readUint32LE();
+ _sectionBuffer = (byte *)malloc(_sectionSize);
+ _inSaveFile->read(_sectionBuffer, _sectionSize);
}
}
_sectionPtr = 0;
@@ -96,12 +99,12 @@
void SaveGame::endSection() {
if (_currentSection == 0)
error("Tried to end a save game section without starting a section!");
- if(_saving) {
- gzwrite(_fileHandle, &_currentSection, sizeof(uint32));
- gzwrite(_fileHandle, &_sectionSize, sizeof(uint32));
- gzwrite(_fileHandle, _sectionBuffer, _sectionSize);
+ if (_saving) {
+ _outSaveFile->writeUint32LE(_currentSection);
+ _outSaveFile->writeUint32LE(_sectionSize);
+ _outSaveFile->write(_sectionBuffer, _sectionSize);
}
- delete[] _sectionBuffer;
+ free(_sectionBuffer);
_sectionBuffer = NULL;
_currentSection = 0;
}
@@ -120,8 +123,8 @@
error("SaveGame::writeBlock called when restoring a savegame!");
if (_currentSection == 0)
error("Tried to write a block without starting a section!");
- _sectionBuffer = (char *)realloc(_sectionBuffer, _sectionSize + size);
- if (_sectionBuffer == NULL)
+ _sectionBuffer = (byte *)realloc(_sectionBuffer, _sectionSize + size);
+ if (!_sectionBuffer)
error("Failed to allocate space for buffer!");
memcpy(&_sectionBuffer[_sectionSize], data, size);
_sectionSize += size;
Modified: residual/trunk/engine/savegame.h
===================================================================
--- residual/trunk/engine/savegame.h 2008-07-20 15:42:52 UTC (rev 33131)
+++ residual/trunk/engine/savegame.h 2008-07-20 15:53:14 UTC (rev 33132)
@@ -38,6 +38,8 @@
namespace Common {
class SaveFileManager;
+ class InSaveFile;
+ class OutSaveFile;
}
extern Common::SaveFileManager *g_saveFileMan;
@@ -54,11 +56,12 @@
protected:
bool _saving;
- gzFile _fileHandle;
+ Common::InSaveFile *_inSaveFile;
+ Common::OutSaveFile *_outSaveFile;
uint32 _currentSection;
uint32 _sectionSize;
uint32 _sectionPtr;
- char *_sectionBuffer;
+ byte *_sectionBuffer;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list