aboutsummaryrefslogtreecommitdiff
path: root/engines/macventure/macventure.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/macventure/macventure.cpp')
-rw-r--r--engines/macventure/macventure.cpp52
1 files changed, 50 insertions, 2 deletions
diff --git a/engines/macventure/macventure.cpp b/engines/macventure/macventure.cpp
index 1fca4288e8..9b764d9856 100644
--- a/engines/macventure/macventure.cpp
+++ b/engines/macventure/macventure.cpp
@@ -82,7 +82,6 @@ Common::Error MacVentureEngine::run() {
// Additional setup.
debug("MacVentureEngine::init");
-
_resourceManager = new Common::MacResManager();
if (!_resourceManager->open(getGameFileName()))
error("Could not open %s as a resource fork", getGameFileName());
@@ -113,7 +112,6 @@ Common::Error MacVentureEngine::run() {
_destObject = 0;
_prepared = true;
- //if !savegame
_cmdReady = true;
_selectedControl = kStartOrResume;
ObjID playerParent = _world->getObjAttr(1, kAttrParentObject);
@@ -162,6 +160,42 @@ Common::Error MacVentureEngine::run() {
return Common::kNoError;
}
+Common::Error MacVentureEngine::loadGameState(int slot) {
+ Common::InSaveFile *file = getSaveFileManager()->openForLoading("Shadowgate.1");
+ _world->loadGameFrom(file);
+ reset();
+ return Common::kNoError;
+}
+
+Common::Error MacVentureEngine::saveGameState(int slot, const Common::String &desc) {
+ Common::SaveFileManager *manager = getSaveFileManager();
+ // HACK Get a real name!
+ Common::OutSaveFile *file = manager->openForSaving("Shadowgate.1");
+ _world->saveGameInto(file);
+ delete file;
+}
+
+void MacVentureEngine::reset() {
+ resetInternals();
+ resetGui();
+}
+
+void MacVentureEngine::resetInternals() {
+ _scriptEngine->reset();
+ _currentSelection.clear();
+ _selectedObjs.clear();
+ _objQueue.clear();
+ _textQueue.clear();
+}
+
+void MacVentureEngine::resetGui() {
+ _gui->updateWindowInfo(kMainGameWindow, getParent(1), _world->getChildren(getParent(1), true));
+ // HACK! should update all inventories
+ _gui->updateWindowInfo(kInventoryStart, 1, _world->getChildren(1, true));
+ _gui->updateWindowInfo(kExitsWindow, getParent(1), _world->getChildren(getParent(1), true));
+}
+
+
void MacVentureEngine::requestQuit() {
// TODO: Display save game dialog and such
_gameState = kGameStateQuitting;
@@ -391,6 +425,20 @@ Common::String MacVentureEngine::getUserInput() {
return _userInput;
}
+
+Common::String MacVentureEngine::getStartGameFileName() {
+ Common::SeekableReadStream *res;
+ res = _resourceManager->getResource(MKTAG('S', 'T', 'R', ' '), kStartGameFilenameID);
+ if (!res)
+ return "";
+
+ byte length = res->readByte();
+ char *fileName = new char[length + 1];
+ res->read(fileName, length);
+ fileName[length] = '\0';
+ return Common::String(fileName, length);
+}
+
const GlobalSettings& MacVentureEngine::getGlobalSettings() const {
return _globalSettings;
}