[Scummvm-cvs-logs] SF.net SVN: scummvm:[43026] scummvm/branches/branch-1-0-0/engines/agi

buddha_ at users.sourceforge.net buddha_ at users.sourceforge.net
Mon Aug 3 19:27:55 CEST 2009


Revision: 43026
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43026&view=rev
Author:   buddha_
Date:     2009-08-03 17:27:55 +0000 (Mon, 03 Aug 2009)

Log Message:
-----------
(Backport of r43025) Fix for bug #2828333 (AGI: KQ1: Greensleeves always plays):
- Made all savegame loading in AGI do the same pre-load and post-load stuff.
- Moved load/saveGameState from AgiBase to AgiEngine
- Added rudimentary error handling to load/saveGameState
- Incidentally also fixes the hanging note from bug #2798797.

Modified Paths:
--------------
    scummvm/branches/branch-1-0-0/engines/agi/agi.h
    scummvm/branches/branch-1-0-0/engines/agi/detection.cpp
    scummvm/branches/branch-1-0-0/engines/agi/saveload.cpp

Modified: scummvm/branches/branch-1-0-0/engines/agi/agi.h
===================================================================
--- scummvm/branches/branch-1-0-0/engines/agi/agi.h	2009-08-03 17:18:18 UTC (rev 43025)
+++ scummvm/branches/branch-1-0-0/engines/agi/agi.h	2009-08-03 17:27:55 UTC (rev 43026)
@@ -760,8 +760,6 @@
 	void initVersion(void);
 	void setVersion(uint16 version);
 
-	Common::Error loadGameState(int slot);
-	Common::Error saveGameState(int slot, const char *desc);
 	bool canLoadGameStateCurrently();
 	bool canSaveGameStateCurrently();
 };
@@ -785,6 +783,8 @@
 		return _gameId;
 	}
 
+	Common::Error loadGameState(int slot);
+	Common::Error saveGameState(int slot, const char *desc);
 
 private:
 

Modified: scummvm/branches/branch-1-0-0/engines/agi/detection.cpp
===================================================================
--- scummvm/branches/branch-1-0-0/engines/agi/detection.cpp	2009-08-03 17:18:18 UTC (rev 43025)
+++ scummvm/branches/branch-1-0-0/engines/agi/detection.cpp	2009-08-03 17:27:55 UTC (rev 43026)
@@ -1290,20 +1290,6 @@
 
 namespace Agi {
 
-Common::Error AgiBase::loadGameState(int slot) {
-	static char saveLoadSlot[12];
-	sprintf(saveLoadSlot, "%s.%.3d", _targetName.c_str(), slot);
-	loadGame(saveLoadSlot);
-	return Common::kNoError;	// TODO: return success/failure
-}
-
-Common::Error AgiBase::saveGameState(int slot, const char *desc) {
-	static char saveLoadSlot[12];
-	sprintf(saveLoadSlot, "%s.%.3d", _targetName.c_str(), slot);
-	saveGame(saveLoadSlot, desc);
-	return Common::kNoError;	// TODO: return success/failure
-}
-
 bool AgiBase::canLoadGameStateCurrently() {
 	return (!(getGameType() == GType_PreAGI) && getflag(fMenusWork) && !_noSaveLoadAllowed);
 }

Modified: scummvm/branches/branch-1-0-0/engines/agi/saveload.cpp
===================================================================
--- scummvm/branches/branch-1-0-0/engines/agi/saveload.cpp	2009-08-03 17:18:18 UTC (rev 43025)
+++ scummvm/branches/branch-1-0-0/engines/agi/saveload.cpp	2009-08-03 17:27:55 UTC (rev 43026)
@@ -972,6 +972,9 @@
 
 		snprintf (saveNameBuffer, 256, "%s.%03d", _targetName.c_str(), ConfMan.getInt("save_slot"));
 
+		_sprites->eraseBoth();
+		_sound->stopSound();
+
 		if (loadGame(saveNameBuffer, false) == errOK) {	 // Do not check game id
 			_game.exitAllLogics = 1;
 			_menu->enableAll();
@@ -979,4 +982,29 @@
 	}
 }
 
+Common::Error AgiEngine::loadGameState(int slot) {
+	static char saveLoadSlot[12];
+	sprintf(saveLoadSlot, "%s.%.3d", _targetName.c_str(), slot);
+
+	_sprites->eraseBoth();
+	_sound->stopSound();
+
+	if (loadGame(saveLoadSlot) == errOK) {
+		_game.exitAllLogics = 1;
+		_menu->enableAll();
+		return Common::kNoError;
+	} else {
+		return Common::kUnknownError;
+	}
+}
+
+Common::Error AgiEngine::saveGameState(int slot, const char *desc) {
+	static char saveLoadSlot[12];
+	sprintf(saveLoadSlot, "%s.%.3d", _targetName.c_str(), slot);
+	if (saveGame(saveLoadSlot, desc) == errOK)
+		return Common::kNoError;
+	else
+		return Common::kUnknownError;
+}
+
 } // End of namespace Agi


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