diff options
author | Peter Kohaut | 2019-02-11 20:57:57 +0100 |
---|---|---|
committer | Peter Kohaut | 2019-02-11 22:48:55 +0100 |
commit | 6854ea3ddd83798a9045307763bbb346d8a1736b (patch) | |
tree | 14fefc869658b53c4b2ee62b37fc04735508c13b /engines/bladerunner/bladerunner.cpp | |
parent | b14fbaa72b3218862a533dd7f7c0e97e1bed4df7 (diff) | |
download | scummvm-rg350-6854ea3ddd83798a9045307763bbb346d8a1736b.tar.gz scummvm-rg350-6854ea3ddd83798a9045307763bbb346d8a1736b.tar.bz2 scummvm-rg350-6854ea3ddd83798a9045307763bbb346d8a1736b.zip |
BLADERUNNER: Improved time management
This should fix thi issue with freezing actors after loading save game,
but works on new saves only. Game was not paused before saving
and wrong timer value got saved.
Diffstat (limited to 'engines/bladerunner/bladerunner.cpp')
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 40 |
1 files changed, 9 insertions, 31 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index 5c49281256..5aef48caa4 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -274,7 +274,9 @@ Common::Error BladeRunnerEngine::saveGameState(int slot, const Common::String &d BladeRunner::SaveFileManager::writeHeader(*saveFile, header); + _time->pause(); saveGame(*saveFile, thumbnail); + _time->resume(); saveFile->finalize(); @@ -285,6 +287,10 @@ Common::Error BladeRunnerEngine::saveGameState(int slot, const Common::String &d return Common::kNoError; } +void BladeRunnerEngine::pauseEngineIntern(bool pause) { + _mixer->pauseAll(pause); +} + Common::Error BladeRunnerEngine::run() { Graphics::PixelFormat format = createRGB555(); initGraphics(640, 480, &format); @@ -1113,7 +1119,7 @@ void BladeRunnerEngine::handleKeyUp(Common::Event &event) { _kia->open(kKIASectionSettings); break; case Common::KEYCODE_SPACE: - // TODO: combat::switchCombatMode(&Combat); + _combat->change(); break; default: break; @@ -1122,16 +1128,8 @@ void BladeRunnerEngine::handleKeyUp(Common::Event &event) { void BladeRunnerEngine::handleKeyDown(Common::Event &event) { if ((event.kbd.keycode == Common::KEYCODE_d) && (event.kbd.flags & Common::KBD_CTRL)) { - _time->pause(); getDebugger()->attach(); getDebugger()->onFrame(); - - _time->resume(); - - if (!_kia->isOpen() && !_spinner->isOpen() && !_elevator->isOpen() && !_esper->isOpen() && !_dialogueMenu->isOpen() && !_scores->isOpen()) { - _scene->resume(); - } - return; } @@ -1968,32 +1966,12 @@ void BladeRunnerEngine::autoSaveGame(int textId, bool endgame) { if (slot == -1) { slot = maxSlot + 1; } - - Common::OutSaveFile *saveFile = BladeRunner::SaveFileManager::openForSaving(getTargetName(), slot); - if (saveFile == nullptr || saveFile->err()) { - delete saveFile; - } - - BladeRunner::SaveFileHeader header; if (endgame) { - header._name = "END_GAME_STATE"; + saveGameState(slot, "END_GAME_STATE"); } else { - header._name = textAutoSave.getText(textId); + saveGameState(slot, textAutoSave.getText(textId)); } - BladeRunner::SaveFileManager::writeHeader(*saveFile, header); - - Graphics::Surface thumbnail = generateThumbnail(); - - _time->pause(); - saveGame(*saveFile, thumbnail); - _time->resume(); - - saveFile->finalize(); - - thumbnail.free(); - - delete saveFile; } void BladeRunnerEngine::ISez(const Common::String &str) { |