[Scummvm-cvs-logs] CVS: scummvm/sky control.cpp,1.54,1.55
Marcus Comstedt
marcus_c at users.sourceforge.net
Sun Aug 10 13:51:04 CEST 2003
Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv7983/sky
Modified Files:
control.cpp
Log Message:
Replaced use of File with use of SaveFileManager where appropriate.
Index: control.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/control.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- control.cpp 3 Aug 2003 17:17:24 -0000 1.54
+++ control.cpp 10 Aug 2003 20:50:50 -0000 1.55
@@ -788,14 +788,21 @@
bool SkyControl::autoSaveExists(void) {
- File test;
+ bool test = false;
+ SaveFile *f;
char fName[20];
if (SkyState::isCDVersion())
strcpy(fName, "SKY-VM-CD.ASD");
else
sprintf(fName, "SKY-VM%03d.ASD", SkyState::_systemVars.gameVersion);
- test.open(fName, _savePath);
- return test.isOpen();
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ f = mgr->open_savefile(fName, _savePath, false);
+ if (f != NULL) {
+ test = true;
+ delete f;
+ }
+ delete mgr;
+ return test;
}
uint16 SkyControl::saveRestorePanel(bool allowSave) {
@@ -1011,11 +1018,12 @@
memset(destBuf, 0, MAX_SAVE_GAMES * MAX_TEXT_LEN);
- File inf;
- inf.open("SKY-VM.SAV",_savePath);
- if (inf.isOpen()) {
- uint8 *tmpBuf = (uint8 *)malloc(inf.size());
- inf.read(tmpBuf, inf.size());
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ SaveFile *inf;
+ inf = mgr->open_savefile("SKY-VM.SAV",_savePath,false);
+ if (inf != NULL) {
+ uint8 *tmpBuf = (uint8 *)malloc(MAX_SAVE_GAMES * MAX_TEXT_LEN);
+ inf->read(tmpBuf, MAX_SAVE_GAMES * MAX_TEXT_LEN);
uint8 *destPos = destBuf;
uint8 *inPos = tmpBuf;
for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) {
@@ -1027,7 +1035,7 @@
inPos += nameCnt + 1;
}
free(tmpBuf);
- inf.close();
+ delete inf;
} else {
uint8 *destPos = destBuf;
for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) {
@@ -1035,6 +1043,7 @@
destPos += MAX_TEXT_LEN;
}
}
+ delete mgr;
}
bool SkyControl::loadSaveAllowed(void) {
@@ -1069,10 +1078,14 @@
tmpPos++;
srcPos += MAX_TEXT_LEN;
}
- File outf;
- outf.open("SKY-VM.SAV", _savePath, File::kFileWriteMode);
- outf.write(tmpBuf, tmpPos - tmpBuf);
- outf.close();
+ SaveFile *outf;
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ outf = mgr->open_savefile("SKY-VM.SAV", _savePath, true);
+ if (outf != NULL) {
+ outf->write(tmpBuf, tmpPos - tmpBuf);
+ delete outf;
+ }
+ delete mgr;
free(tmpBuf);
}
@@ -1082,17 +1095,21 @@
strcpy(fName, "SKY-VM-CD.ASD");
else
sprintf(fName, "SKY-VM%03d.ASD", SkyState::_systemVars.gameVersion);
- File outf;
- if (!outf.open(fName, _savePath, File::kFileWriteMode)) {
+ SaveFile *outf;
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ outf = mgr->open_savefile(fName, _savePath, true);
+ if (outf == NULL) {
warning("Can't create file %s for autosaving", fName);
+ delete mgr;
return;
}
uint8 *saveData = (uint8 *)malloc(0x20000);
uint32 fSize = prepareSaveData(saveData);
- if (outf.write(saveData, fSize) != fSize)
+ if (outf->write(saveData, fSize) != fSize)
warning("Can't write file %s for autosaving. Disk full?", fName);
- outf.close();
+ delete outf;
+ delete mgr;
free(saveData);
}
@@ -1100,19 +1117,25 @@
char fName[20];
sprintf(fName,"SKY-VM.%03d", _selectedGame);
- File outf;
- if (!outf.open(fName, _savePath, File::kFileWriteMode)) {
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ SaveFile *outf;
+ outf = mgr->open_savefile(fName, _savePath, true);
+ if (outf == NULL) {
+ delete mgr;
return NO_DISK_SPACE;
}
uint8 *saveData = (uint8 *)malloc(0x20000);
uint32 fSize = prepareSaveData(saveData);
- if (outf.write(saveData, fSize) != fSize) {
+ if (outf->write(saveData, fSize) != fSize) {
free(saveData);
+ delete outf;
+ delete mgr;
return NO_DISK_SPACE;
}
- outf.close();
+ delete outf;
+ delete mgr;
free(saveData);
return GAME_SAVED;
}
@@ -1501,30 +1524,31 @@
} else
sprintf(fName,"SKY-VM.%03d", _selectedGame);
- File inf;
- if (!inf.open(fName, _savePath)) {
+ SaveFileManager *mgr = _system->get_savefile_manager();
+ SaveFile *inf;
+ inf = mgr->open_savefile(fName, _savePath, false);
+ if (inf == NULL) {
+ delete mgr;
return RESTORE_FAILED;
}
- uint32 fSize = inf.size();
- uint8 *saveData = (uint8 *)malloc(fSize);
- uint32 infSize = inf.readUint32LE();
- inf.seek(0, SEEK_SET);
+ uint32 infSize = inf->readUint32LE();
+ if (infSize < 4) infSize = 4;
+ uint8 *saveData = (uint8 *)malloc(infSize);
+ *(uint32 *)saveData = TO_LE_32(infSize);
- if (fSize != infSize) {
- warning("File size doesn't match expected data size!");
- free(saveData);
- return RESTORE_FAILED;
- }
- if (inf.read(saveData, fSize) != fSize) {
+ if (inf->read(saveData+4, infSize-4) != infSize-4) {
warning("Can't read from file!");
free(saveData);
+ delete inf;
+ delete mgr;
return RESTORE_FAILED;
}
uint16 res = parseSaveData(saveData);
SkyState::_systemVars.pastIntro = true;
- inf.close();
+ delete inf;
+ delete mgr;
free(saveData);
return res;
}
More information about the Scummvm-git-logs
mailing list