diff options
Diffstat (limited to 'engines/macventure/macventure.cpp')
-rw-r--r-- | engines/macventure/macventure.cpp | 52 |
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; } |