aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/saveload.cpp
diff options
context:
space:
mode:
authorathrxx2011-04-21 20:29:25 +0200
committerathrxx2011-04-21 20:29:25 +0200
commit204644b001d85612742426b5731b8149b0a24f2e (patch)
tree8e19872f056e773335536b5cb6a70d3e3f55f75f /engines/tsage/saveload.cpp
parentb0008d2d33c394fbba358c08b032c5872e6a909d (diff)
parent44e79c70fa2908e0abdb7c9effa1dd039404a520 (diff)
downloadscummvm-rg350-204644b001d85612742426b5731b8149b0a24f2e.tar.gz
scummvm-rg350-204644b001d85612742426b5731b8149b0a24f2e.tar.bz2
scummvm-rg350-204644b001d85612742426b5731b8149b0a24f2e.zip
Merge branch 'master' of https://github.com/scummvm/scummvm
Diffstat (limited to 'engines/tsage/saveload.cpp')
-rw-r--r--engines/tsage/saveload.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp
index 594d30fa3c..8b07767f22 100644
--- a/engines/tsage/saveload.cpp
+++ b/engines/tsage/saveload.cpp
@@ -151,13 +151,13 @@ Common::Error Saver::save(int slot, const Common::String &saveName) {
}
Common::Error Saver::restore(int slot) {
- assert(!getMacroSaveFlag());
+ assert(!getMacroRestoreFlag());
// Signal any objects registered for notification
_loadNotifiers.notify(false);
// Set fields
- _macroSaveFlag = true;
+ _macroRestoreFlag = true;
_saveSlot = slot;
_unresolvedPtrs.clear();
@@ -335,7 +335,7 @@ bool Saver::savegamesExist() const {
*/
int Saver::blockIndexOf(SavedObject *p) {
int objIndex = 1;
- SynchronisedList<SavedObject *>::iterator iObj;
+ Common::List<SavedObject *>::iterator iObj;
for (iObj = _objList.begin(); iObj != _objList.end(); ++iObj, ++objIndex) {
SavedObject *iObjP = *iObj;
@@ -347,6 +347,25 @@ int Saver::blockIndexOf(SavedObject *p) {
}
/**
+ * Returns the number of objects in the object list registry
+ */
+int Saver::getObjectCount() const {
+ return _objList.size();
+}
+
+/**
+ * List any currently active objects
+ */
+void Saver::listObjects() {
+ Common::List<SavedObject *>::iterator i;
+ int count = 1;
+
+ for (i = _objList.begin(); i != _objList.end(); ++i, ++count)
+ debug("%d - %s", count, (*i)->getClassName().c_str());
+ debugN("\n");
+}
+
+/**
* Returns the pointer associated with the specified object index
*/
void Saver::resolveLoadPointers() {
@@ -358,12 +377,14 @@ void Saver::resolveLoadPointers() {
int objIndex = 1;
for (SynchronisedList<SavedObject *>::iterator iObj = _objList.begin(); iObj != _objList.end(); ++iObj, ++objIndex) {
Common::List<SavedObjectRef>::iterator iPtr;
+ SavedObject *pObj = *iObj;
for (iPtr = _unresolvedPtrs.begin(); iPtr != _unresolvedPtrs.end(); ) {
SavedObjectRef &r = *iPtr;
if (r._objIndex == objIndex) {
// Found an unresolved pointer to this object
- *r._savedObject = *iObj;
+ SavedObject **objPP = r._savedObject;
+ *objPP = pObj;
iPtr = _unresolvedPtrs.erase(iPtr);
} else {
++iPtr;