aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/bladerunner.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-02-11 20:57:57 +0100
committerPeter Kohaut2019-02-11 22:48:55 +0100
commit6854ea3ddd83798a9045307763bbb346d8a1736b (patch)
tree14fefc869658b53c4b2ee62b37fc04735508c13b /engines/bladerunner/bladerunner.cpp
parentb14fbaa72b3218862a533dd7f7c0e97e1bed4df7 (diff)
downloadscummvm-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.cpp40
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) {