[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