[Scummvm-cvs-logs] SF.net SVN: scummvm:[34535] scummvm/trunk

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Sep 14 21:48:43 CEST 2008


Revision: 34535
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34535&view=rev
Author:   lordhoto
Date:     2008-09-14 19:48:40 +0000 (Sun, 14 Sep 2008)

Log Message:
-----------
Added autosave support in Kyra.

Modified Paths:
--------------
    scummvm/trunk/NEWS
    scummvm/trunk/engines/kyra/gui.cpp
    scummvm/trunk/engines/kyra/kyra_hof.cpp
    scummvm/trunk/engines/kyra/kyra_lok.cpp
    scummvm/trunk/engines/kyra/kyra_mr.cpp
    scummvm/trunk/engines/kyra/kyra_v1.cpp
    scummvm/trunk/engines/kyra/kyra_v1.h
    scummvm/trunk/engines/kyra/lol.h
    scummvm/trunk/engines/kyra/saveload.cpp
    scummvm/trunk/engines/kyra/script_mr.cpp
    scummvm/trunk/engines/kyra/timer_mr.cpp

Modified: scummvm/trunk/NEWS
===================================================================
--- scummvm/trunk/NEWS	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/NEWS	2008-09-14 19:48:40 UTC (rev 34535)
@@ -8,6 +8,9 @@
  New Games:
    - Added support for Discworld.
 
+ KYRA:
+   - Added support for Auto-save feature
+
 0.12.0 (2008-08-31)
  New Games:
    - Added support for The Legend of Kyrandia: Book Two: Hand of Fate.

Modified: scummvm/trunk/engines/kyra/gui.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/gui.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -311,8 +311,6 @@
 		s1 -= '0';
 		s2 -= '0';
 		s3 -= '0';
-		if (s1 == 9 && s2 == 9 && s3 == 9)
-			continue;
 		_saveSlots.push_back(s1*100+s2*10+s3);
 	}
 

Modified: scummvm/trunk/engines/kyra/kyra_hof.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_hof.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/kyra_hof.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -462,8 +462,13 @@
 			_drawNoShapeFlag = 0;
 			_gui->optionsButton(0);
 			_deathHandler = -1;
+
+			if (!_runFlag || !quit())
+				break;
 		}
 
+		checkAutosave();
+
 		if (_system->getMillis() > _nextIdleAnim)
 			showIdleAnim();
 

Modified: scummvm/trunk/engines/kyra/kyra_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_lok.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/kyra_lok.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -406,6 +406,8 @@
 		int32 frameTime = (int32)_system->getMillis();
 		_skipFlag = false;
 
+		checkAutosave();
+
 		if (_currentCharacter->sceneId == 210) {
 			updateKyragemFading();
 			if (seq_playEnd() && _deathHandler != 8)

Modified: scummvm/trunk/engines/kyra/kyra_mr.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_mr.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/kyra_mr.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -1008,7 +1008,12 @@
 			_drawNoShapeFlag = 0;
 			_gui->optionsButton(0);
 			_deathHandler = -1;
+
+			if (quit())
+				break;
 		}
+
+		checkAutosave();
 		
 		if (_system->getMillis() >= _nextIdleAnim)
 			showIdleAnim();

Modified: scummvm/trunk/engines/kyra/kyra_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/kyra_v1.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -181,6 +181,9 @@
 			_gameToLoad = -1;
 	}
 
+	// Prevent autosave on game startup
+	_lastAutosave = _system->getMillis();
+
 	return 0;
 }
 

Modified: scummvm/trunk/engines/kyra/kyra_v1.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.h	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/kyra_v1.h	2008-09-14 19:48:40 UTC (rev 34535)
@@ -271,6 +271,9 @@
 	// save/load
 	int _gameToLoad;
 
+	uint32 _lastAutosave;
+	void checkAutosave();
+
 	const char *getSavegameFilename(int num);
 	bool saveFileLoadable(int slot);
 
@@ -295,6 +298,8 @@
 
 	static kReadSaveHeaderError readSaveHeader(Common::SeekableReadStream *file, bool loadThumbnail, SaveHeader &header);
 
+	virtual void saveGame(const char *fileName, const char *saveName, const Graphics::Surface *thumbnail) = 0;
+
 	Common::SeekableReadStream *openSaveForReading(const char *filename, SaveHeader &header);
 	Common::WriteStream *openSaveForWriting(const char *filename, const char *saveName, const Graphics::Surface *thumbnail) const;
 };

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/lol.h	2008-09-14 19:48:40 UTC (rev 34535)
@@ -147,6 +147,9 @@
 	void setHandItem(uint16) {}
 	void removeHandItem() {}
 	bool lineIsPassable(int, int) { return false; }
+
+	// save
+	void saveGame(const char *fileName, const char *saveName, const Graphics::Surface *thumbnail) {}
 };
 
 } // end of namespace Kyra

Modified: scummvm/trunk/engines/kyra/saveload.cpp
===================================================================
--- scummvm/trunk/engines/kyra/saveload.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/saveload.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -220,7 +220,7 @@
 	assert(num >= 0 && num <= 999);
 
 	char extension[5];
-	sprintf(extension, "%.3d", num);
+	sprintf(extension, "%03d", num);
 
 	filename = _targetName + "." + extension;
 
@@ -242,5 +242,12 @@
 	return false;
 }
 
+void KyraEngine_v1::checkAutosave() {
+	if (shouldPerformAutoSave(_lastAutosave)) {
+		saveGame(getSavegameFilename(999), "Autosave", 0);
+		_lastAutosave = _system->getMillis();
+	}
+}
+
 } // end of namespace Kyra
 

Modified: scummvm/trunk/engines/kyra/script_mr.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_mr.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/script_mr.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -293,7 +293,7 @@
 
 int KyraEngine_MR::o3_makeSecondChanceSave(EMCState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_makeSecondChanceSave(%p) ()", (const void *)script);
-	saveGame(getSavegameFilename(999), "SECOND CHANCE SAVE GAME", 0);
+	saveGame(getSavegameFilename(999), "Autosave", 0);
 	return 0;
 }
 

Modified: scummvm/trunk/engines/kyra/timer_mr.cpp
===================================================================
--- scummvm/trunk/engines/kyra/timer_mr.cpp	2008-09-14 19:16:08 UTC (rev 34534)
+++ scummvm/trunk/engines/kyra/timer_mr.cpp	2008-09-14 19:48:40 UTC (rev 34535)
@@ -65,7 +65,7 @@
 void KyraEngine_MR::timerFleaDeath(int arg) {
 	debugC(9, kDebugLevelMain | kDebugLevelTimer, "KyraEngine_MR::timerFleaDeath(%d)", arg);
 	_timer->setCountdown(4, 5400);
-	saveGame(getSavegameFilename(999), "SECOND CHANCE SAVE GAME", 0);
+	saveGame(getSavegameFilename(999), "Autosave", 0);
 	_screen->hideMouse();
 	_timer->disable(4);
 	runAnimationScript("FLEADTH1.EMC", 0, 0, 1, 1);


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