diff options
Diffstat (limited to 'engines/cryomni3d/versailles')
-rw-r--r-- | engines/cryomni3d/versailles/engine.cpp | 8 | ||||
-rw-r--r-- | engines/cryomni3d/versailles/engine.h | 4 | ||||
-rw-r--r-- | engines/cryomni3d/versailles/saveload.cpp | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp index c8a8b110ad..ab9318f8c3 100644 --- a/engines/cryomni3d/versailles/engine.cpp +++ b/engines/cryomni3d/versailles/engine.cpp @@ -67,6 +67,12 @@ CryOmni3DEngine_Versailles::~CryOmni3DEngine_Versailles() { delete _fixedImage; } +bool CryOmni3DEngine_Versailles::hasFeature(EngineFeature f) const { + return CryOmni3DEngine::hasFeature(f) + || (f == kSupportsSavingDuringRuntime) + || (f == kSupportsLoadingDuringRuntime); +} + Common::Error CryOmni3DEngine_Versailles::run() { CryOmni3DEngine::run(); @@ -1135,6 +1141,7 @@ int CryOmni3DEngine_Versailles::handleWarp() { bool moving = true; uint actionId; showMouse(true); + _canLoadSave = true; while (!leftButtonPressed && !exit) { int xDelta = 0, yDelta = 0; uint movingCursor = -1; @@ -1219,6 +1226,7 @@ int CryOmni3DEngine_Versailles::handleWarp() { // Slow down loop but after updating screen g_system->delayMillis(10); } + _canLoadSave = false; showMouse(false); return actionId; } diff --git a/engines/cryomni3d/versailles/engine.h b/engines/cryomni3d/versailles/engine.h index 369f69ade9..83beddbd4b 100644 --- a/engines/cryomni3d/versailles/engine.h +++ b/engines/cryomni3d/versailles/engine.h @@ -217,6 +217,10 @@ public: CryOmni3DEngine_Versailles(OSystem *syst, const CryOmni3DGameDescription *gamedesc); virtual ~CryOmni3DEngine_Versailles(); + bool hasFeature(EngineFeature f) const override; + virtual Common::Error loadGameState(int slot) override; + virtual Common::Error saveGameState(int slot, const Common::String &desc) override; + Common::String prepareFileName(const Common::String &baseName, const char *extension) const { const char *const extensions[] = { extension, nullptr }; return prepareFileName(baseName, extensions); diff --git a/engines/cryomni3d/versailles/saveload.cpp b/engines/cryomni3d/versailles/saveload.cpp index 5aec69e5ff..2c14c3d624 100644 --- a/engines/cryomni3d/versailles/saveload.cpp +++ b/engines/cryomni3d/versailles/saveload.cpp @@ -30,6 +30,16 @@ namespace CryOmni3D { namespace Versailles { +Common::Error CryOmni3DEngine_Versailles::loadGameState(int slot) { + _loadedSave = slot + 1; + _abortCommand = kAbortLoadGame; + return Common::kNoError; +} + +Common::Error CryOmni3DEngine_Versailles::saveGameState(int slot, const Common::String &desc) { + saveGame(_isVisiting, slot + 1, desc); + return Common::kNoError; +} Common::String CryOmni3DEngine_Versailles::getSaveFileName(bool visit, uint saveNum) const { return Common::String::format("%s%s.%04u", _targetName.c_str(), visit ? "_visit" : "", saveNum); |