From 142e1743ced232e2f269615c93ce0bbc3974144e Mon Sep 17 00:00:00 2001 From: Joseph-Eugene Winzer Date: Thu, 31 Aug 2017 21:17:40 +0200 Subject: SUPERNOVA: Fixes playing vinyl in CabinL3 --- engines/supernova/rooms.cpp | 48 +++++++++++++++------------------------------ engines/supernova/state.h | 1 - 2 files changed, 16 insertions(+), 33 deletions(-) (limited to 'engines') diff --git a/engines/supernova/rooms.cpp b/engines/supernova/rooms.cpp index ba6f6538fe..2c87b5869b 100644 --- a/engines/supernova/rooms.cpp +++ b/engines/supernova/rooms.cpp @@ -792,44 +792,28 @@ bool ShipCabinL3::interact(Action verb, Object &obj1, Object &obj2) { } else if ((verb == ACTION_PRESS) && (obj1._id == TURNTABLE_BUTTON)) { if (!isSectionVisible(15)) { _vm->renderMessage("Es ist doch gar keine Platte aufgelegt."); - } else if (!isSectionVisible(10) && - !isSectionVisible(11) && - isSectionVisible(12)) { - if (_gm->_soundDevice != 2) { - _gm->drawImage(14); - setSectionVisible(15, false); - for (int i = 3; i; i--) { - _vm->playSound(kAudioTurntable); - if (_gm->_soundDevice) { - do { - if (isSectionVisible(13)) { - _gm->drawImage(14); - setSectionVisible(13, false); - } else { - _gm->drawImage(13); - setSectionVisible(14, false); - } - _gm->wait2(3); - } while (_gm->_status); + } else if (!isSectionVisible(10) && !isSectionVisible(11) && isSectionVisible(12)) { + _gm->drawImage(14); + setSectionVisible(15, false); + for (int i = 3; i; i--) { + _vm->playSound(kAudioTurntable); + while (_vm->_mixer->isSoundHandleActive(_vm->_soundHandle)) { + if (isSectionVisible(13)) { + _gm->drawImage(14); + setSectionVisible(13, false); } else { - _gm->wait2(1); + _gm->drawImage(13); + setSectionVisible(14, false); } - } - } else { - for (int i = 10; i; i--) { - _gm->drawImage(14); - _gm->wait2(3); - _gm->drawImage(13); _gm->wait2(3); } } - _gm->drawImage(15); - setSectionVisible(14, false); - setSectionVisible(13, false); - _vm->renderMessage("Die Platte scheint einen Sprung zu haben."); } - } else if ((verb == ACTION_TAKE) && (obj1._id == RECORD) && - (obj1._click != 15)) { + _gm->drawImage(15); + setSectionVisible(14, false); + setSectionVisible(13, false); + _vm->renderMessage("Die Platte scheint einen Sprung zu haben."); + } else if ((verb == ACTION_TAKE) && (obj1._id == RECORD) && (obj1._click != 15)) { _gm->drawImage(9); setSectionVisible(13, false); setSectionVisible(14, false); diff --git a/engines/supernova/state.h b/engines/supernova/state.h index 1ffa2d09c6..5d93961f0c 100644 --- a/engines/supernova/state.h +++ b/engines/supernova/state.h @@ -113,7 +113,6 @@ public: Room *_rooms[NUMROOMS]; Inventory _inventory; GameState _state; - int _status; bool _processInput; bool _guiEnabled; bool _animationEnabled; -- cgit v1.2.3