aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2009-05-31 17:00:07 +0000
committerMax Horn2009-05-31 17:00:07 +0000
commit78a887490357393b420e288a3318d94497e59293 (patch)
tree20c78127702af0dd6b02e2a7af0fcfe5d074a586 /engines
parent400d2b10af56093e4a4aea650da392bd2c152af8 (diff)
downloadscummvm-rg350-78a887490357393b420e288a3318d94497e59293.tar.gz
scummvm-rg350-78a887490357393b420e288a3318d94497e59293.tar.bz2
scummvm-rg350-78a887490357393b420e288a3318d94497e59293.zip
GOB: Untangled SlotFileIndexed and SlotFileStatic (ATTENTION: This uncovered something which seems to me a bug in SaveLoad_v4::ScreenPropsHandler::getSize)
svn-id: r41078
Diffstat (limited to 'engines')
-rw-r--r--engines/gob/save/savehandler.cpp64
-rw-r--r--engines/gob/save/savehandler.h49
-rw-r--r--engines/gob/save/saveload_v4.cpp4
3 files changed, 45 insertions, 72 deletions
diff --git a/engines/gob/save/savehandler.cpp b/engines/gob/save/savehandler.cpp
index 744b839653..965ddea4b3 100644
--- a/engines/gob/save/savehandler.cpp
+++ b/engines/gob/save/savehandler.cpp
@@ -50,7 +50,7 @@ const char *SlotFile::getBase() const {
return _base;
}
-uint32 SlotFile::getSlotMax() const {
+uint32 SlotFileIndexed::getSlotMax() const {
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
Common::InSaveFile *in;
@@ -73,7 +73,7 @@ uint32 SlotFile::getSlotMax() const {
return 0;
}
-int32 SlotFile::tallyUpFiles(uint32 slotSize, uint32 indexSize) const {
+int32 SlotFileIndexed::tallyUpFiles(uint32 slotSize, uint32 indexSize) const {
uint32 maxSlot = getSlotMax();
if (maxSlot == 0)
@@ -82,7 +82,7 @@ int32 SlotFile::tallyUpFiles(uint32 slotSize, uint32 indexSize) const {
return ((maxSlot * slotSize) + indexSize);
}
-void SlotFile::buildIndex(byte *buffer, SavePartInfo &info,
+void SlotFileIndexed::buildIndex(byte *buffer, SavePartInfo &info,
SaveConverter *converter) const {
uint32 descLength = info.getDescMaxLength();
@@ -114,69 +114,56 @@ void SlotFile::buildIndex(byte *buffer, SavePartInfo &info,
}
}
-bool SlotFile::exists(const char *name) const {
- Common::InSaveFile *in = openRead(name);
- bool result = (in != 0);
- delete in;
- return result;
-}
-
-bool SlotFile::exists(int slot) const {
+bool SlotFileIndexed::exists(int slot) const {
Common::InSaveFile *in = openRead(slot);
bool result = (in != 0);
delete in;
return result;
}
-bool SlotFile::exists() const {
+bool SlotFileStatic::exists() const {
Common::InSaveFile *in = openRead();
bool result = (in != 0);
delete in;
return result;
}
-Common::InSaveFile *SlotFile::openRead(const char *name) const {
+Common::InSaveFile *SlotFileIndexed::openRead(int slot) const {
+ char *name = build(slot);
if (!name)
return 0;
-
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
-
- return saveMan->openForLoading(name);
-}
-
-Common::InSaveFile *SlotFile::openRead(int slot) const {
- char *name = build(slot);
- Common::InSaveFile *result = openRead(name);
+ Common::InSaveFile *result = saveMan->openForLoading(name);
delete[] name;
return result;
}
-Common::InSaveFile *SlotFile::openRead() const {
+Common::InSaveFile *SlotFileStatic::openRead() const {
char *name = build();
- Common::InSaveFile *result = openRead(name);
+ if (!name)
+ return 0;
+ Common::SaveFileManager *saveMan = g_system->getSavefileManager();
+ Common::InSaveFile *result = saveMan->openForLoading(name);
delete[] name;
return result;
}
-Common::OutSaveFile *SlotFile::openWrite(const char *name) const {
+Common::OutSaveFile *SlotFileIndexed::openWrite(int slot) const {
+ char *name = build(slot);
if (!name)
return 0;
-
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
-
- return saveMan->openForSaving(name);
-}
-
-Common::OutSaveFile *SlotFile::openWrite(int slot) const {
- char *name = build(slot);
- Common::OutSaveFile *result = openWrite(name);
+ Common::OutSaveFile *result = saveMan->openForSaving(name);
delete[] name;
return result;
}
-Common::OutSaveFile *SlotFile::openWrite() const {
+Common::OutSaveFile *SlotFileStatic::openWrite() const {
char *name = build();
- Common::OutSaveFile *result = openWrite(name);
+ if (!name)
+ return 0;
+ Common::SaveFileManager *saveMan = g_system->getSavefileManager();
+ Common::OutSaveFile *result = saveMan->openForSaving(name);
delete[] name;
return result;
}
@@ -205,11 +192,6 @@ char *SlotFileIndexed::build(int slot) const {
return slotFile;
}
-char *SlotFileIndexed::build() const {
- return 0;
-}
-
-
SlotFileStatic::SlotFileStatic(GobEngine *vm, const char *base,
const char *ext) : SlotFile(vm, 1, base) {
@@ -228,10 +210,6 @@ int SlotFileStatic::getSlotRemainder(int32 offset) const {
return -1;
}
-char *SlotFileStatic::build(int slot) const {
- return 0;
-}
-
char *SlotFileStatic::build() const {
return strdupcat(_base, _ext);
}
diff --git a/engines/gob/save/savehandler.h b/engines/gob/save/savehandler.h
index 06c6c39cf8..7ddb4c2711 100644
--- a/engines/gob/save/savehandler.h
+++ b/engines/gob/save/savehandler.h
@@ -56,33 +56,6 @@ public:
/** Calculates the slot remainder, for error checking. */
virtual int getSlotRemainder(int32 offset) const = 0;
- /** Build the save file name. */
- virtual char *build(int slot) const = 0;
- /** Build the save file name. */
- virtual char *build() const = 0;
-
- /** Returns the highest filled slot number. */
- virtual uint32 getSlotMax() const;
-
- /** Returns the size of all existing slots + the index. */
- virtual int32 tallyUpFiles(uint32 slotSize, uint32 indexSize) const;
-
- /** Creates an index in buffer. */
- virtual void buildIndex(byte *buffer, SavePartInfo &info,
- SaveConverter *converter = 0) const;
-
- virtual bool exists(const char *name) const;
- virtual bool exists(int slot) const;
- virtual bool exists() const;
-
- virtual Common::InSaveFile *openRead(const char *name) const;
- virtual Common::InSaveFile *openRead(int slot) const;
- virtual Common::InSaveFile *openRead() const;
-
- virtual Common::OutSaveFile *openWrite(const char *name) const;
- virtual Common::OutSaveFile *openWrite(int slot) const;
- virtual Common::OutSaveFile *openWrite() const;
-
protected:
GobEngine *_vm;
char *_base;
@@ -97,8 +70,22 @@ public:
const char *extStub);
~SlotFileIndexed();
+ /** Build the save file name. */
char *build(int slot) const;
- char *build() const;
+
+ /** Returns the highest filled slot number. */
+ virtual uint32 getSlotMax() const;
+
+ /** Returns the size of all existing slots + the index. */
+ virtual int32 tallyUpFiles(uint32 slotSize, uint32 indexSize) const;
+
+ /** Creates an index in buffer. */
+ virtual void buildIndex(byte *buffer, SavePartInfo &info,
+ SaveConverter *converter = 0) const;
+
+ virtual bool exists(int slot) const;
+ virtual Common::InSaveFile *openRead(int slot) const;
+ virtual Common::OutSaveFile *openWrite(int slot) const;
protected:
char *_ext;
@@ -113,9 +100,13 @@ public:
int getSlot(int32 offset) const;
int getSlotRemainder(int32 offset) const;
- char *build(int slot) const;
+ /** Build the save file name. */
char *build() const;
+ virtual bool exists() const;
+ virtual Common::InSaveFile *openRead() const;
+ virtual Common::OutSaveFile *openWrite() const;
+
protected:
char *_ext;
};
diff --git a/engines/gob/save/saveload_v4.cpp b/engines/gob/save/saveload_v4.cpp
index 07b2300732..e73b745aae 100644
--- a/engines/gob/save/saveload_v4.cpp
+++ b/engines/gob/save/saveload_v4.cpp
@@ -459,8 +459,12 @@ SaveLoad_v4::ScreenPropsHandler::~ScreenPropsHandler() {
}
int32 SaveLoad_v4::ScreenPropsHandler::getSize() {
+ // FIXME: It makes no sense to call exists() here, since
+ // _file is a SlotFileIndexed file
+/*
if (_file->exists())
return 256000;
+*/
return 0;
}