aboutsummaryrefslogtreecommitdiff
path: root/engines/cryomni3d/versailles
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cryomni3d/versailles')
-rw-r--r--engines/cryomni3d/versailles/engine.cpp8
-rw-r--r--engines/cryomni3d/versailles/engine.h4
-rw-r--r--engines/cryomni3d/versailles/saveload.cpp10
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);