diff options
author | Max Horn | 2008-11-03 18:32:16 +0000 |
---|---|---|
committer | Max Horn | 2008-11-03 18:32:16 +0000 |
commit | 55c10e0ec6f2d6ea7c58ec1e4b74e5552fda5ddc (patch) | |
tree | 4df4d54fc783f837004ab2419c90aaf5c7f5930a /engines/saga | |
parent | 646666125232064f2c4657c4025433b243e42af9 (diff) | |
download | scummvm-rg350-55c10e0ec6f2d6ea7c58ec1e4b74e5552fda5ddc.tar.gz scummvm-rg350-55c10e0ec6f2d6ea7c58ec1e4b74e5552fda5ddc.tar.bz2 scummvm-rg350-55c10e0ec6f2d6ea7c58ec1e4b74e5552fda5ddc.zip |
Patch #2122869: ALL: Common load dialog
svn-id: r34883
Diffstat (limited to 'engines/saga')
-rw-r--r-- | engines/saga/detection.cpp | 26 | ||||
-rw-r--r-- | engines/saga/saga.cpp | 8 | ||||
-rw-r--r-- | engines/saga/saga.h | 3 |
3 files changed, 36 insertions, 1 deletions
diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp index eecff5f511..e26cf48dcb 100644 --- a/engines/saga/detection.cpp +++ b/engines/saga/detection.cpp @@ -33,7 +33,9 @@ #include "common/advancedDetector.h" #include "common/system.h" +#include "saga/animation.h" #include "saga/displayinfo.h" +#include "saga/events.h" #include "saga/rscfile.h" #include "saga/interface.h" #include "saga/scene.h" @@ -157,7 +159,9 @@ bool SagaMetaEngine::hasFeature(MetaEngineFeature f) const { (f == kSupportsRTL) || (f == kSupportsListSaves) || (f == kSupportsLoadingDuringStartup) || - (f == kSupportsDeleteSave); + (f == kSupportsDeleteSave) || + (f == kSupportsLoadingDuringRuntime) || + (f == kSupportsSavingDuringRuntime); } bool SagaMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const { @@ -237,4 +241,24 @@ int SagaEngine::getDisplayHeight() const { return di.logicalHeight; } +int SagaEngine::loadGameState(int slot) { + // Init the current chapter to 8 (character selection) for IHNM + if (getGameType() == GType_IHNM) + _scene->changeScene(-2, 0, kTransitionFade, 8); + + // First scene sets up palette + _scene->changeScene(getStartSceneNumber(), 0, kTransitionNoFade); + _events->handleEvents(0); // Process immediate events + + if (getGameType() != GType_IHNM) + _interface->setMode(kPanelMain); + else + _interface->setMode(kPanelChapterSelection); + + load(calcSaveFileName((uint)slot)); + syncSoundSettings(); + + return 0; // TODO: return success/failure +} + } // End of namespace Saga diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp index 7904e60d1c..4ee81269d2 100644 --- a/engines/saga/saga.cpp +++ b/engines/saga/saga.cpp @@ -532,4 +532,12 @@ void SagaEngine::syncSoundSettings() { _sound->setVolume(); } +bool SagaEngine::canLoadGameStateCurrently() { + return !this->_scene->isInIntro(); +} + +bool SagaEngine::canSaveGameStateCurrently() { + return !this->_scene->isInIntro(); +} + } // End of namespace Saga diff --git a/engines/saga/saga.h b/engines/saga/saga.h index 2be74e1766..5417217065 100644 --- a/engines/saga/saga.h +++ b/engines/saga/saga.h @@ -650,6 +650,9 @@ public: const Common::Rect &getDisplayClip() const { return _displayClip;} int getDisplayWidth() const; int getDisplayHeight() const; + int loadGameState(int slot); + bool canLoadGameStateCurrently(); + bool canSaveGameStateCurrently(); const GameDisplayInfo &getDisplayInfo(); const char *getTextString(int textStringId); |