aboutsummaryrefslogtreecommitdiff
path: root/queen/cutaway.cpp
diff options
context:
space:
mode:
authorGregory Montoir2003-12-10 15:36:44 +0000
committerGregory Montoir2003-12-10 15:36:44 +0000
commited2baf283e7181799f6e27176c0cb02851e4897c (patch)
tree6db8bc617d1beda2138e9faf1dd8e2407473e1ba /queen/cutaway.cpp
parentd947a6ea778e6d1544ba905d89c84fb2d4b8dc9d (diff)
downloadscummvm-rg350-ed2baf283e7181799f6e27176c0cb02851e4897c.tar.gz
scummvm-rg350-ed2baf283e7181799f6e27176c0cb02851e4897c.tar.bz2
scummvm-rg350-ed2baf283e7181799f6e27176c0cb02851e4897c.zip
- moved QueenEngine::roomChanged to Logic and enabled call from Cutaway code (this fixes the 2 irons bars being displayed at the end of c39a.cut)
- moved my 'panel being hidden after the head room display' fix - fix problem in joeCutFacing / joeFacing in cutaway code svn-id: r11553
Diffstat (limited to 'queen/cutaway.cpp')
-rw-r--r--queen/cutaway.cpp36
1 files changed, 16 insertions, 20 deletions
diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp
index 2ac51f5132..02d181574f 100644
--- a/queen/cutaway.cpp
+++ b/queen/cutaway.cpp
@@ -150,6 +150,9 @@ void Cutaway::load(const char *filename) {
_nextSentence = Talk::getString(_nextSentence, entryString, MAX_STRING_LENGTH);
debug(0, "Entry string = '%s'", entryString);
+ _logic->joeCutFacing(_logic->joeFacing());
+ _logic->joeFace();
+
if (entryString[0] == '*' &&
entryString[1] == 'F' &&
entryString[3] == '\0') {
@@ -403,6 +406,12 @@ void Cutaway::changeRooms(CutawayObject &object) {
comPanel = 1;
}
+ // FIXME: in the original engine, panel is hidden after displaying head. We do
+ // it before.
+ if(object.room == FAYE_HEAD || object.room == AZURA_HEAD || object.room == FRANK_HEAD) {
+ comPanel = 2;
+ }
+
RoomDisplayMode mode;
if (!_logic->joeX() && !_logic->joeY()) {
@@ -865,18 +874,8 @@ void Cutaway::run(char *nextFilename) {
_input->cutawayRunning(true);
- _logic->joeCutFacing(_logic->joeFacing());
- _logic->joeFace();
-
_initialRoom = _temporaryRoom = _logic->currentRoom();
- // FIXME: hack to hide the panel *before* displaying a talking head.
- // This was not handled in the original game, but I think it is
- // better like that.
- if (_talkTo != 0) {
- _comPanel = 2;
- }
-
_logic->display()->screenMode(_comPanel, true);
if (_comPanel == 0 || _comPanel == 2) {
@@ -1012,17 +1011,14 @@ void Cutaway::run(char *nextFilename) {
}
if (_logic->currentRoom() != _initialRoom) {
- // XXX should call SETUP_ROOM here but that would introduce a
- // circual dependency, so we try to set newRoom to the room
- // instead
- debug(0, "[Cutaway::run] Not calling SETUP_ROOM here, just setting newRoom to %i", _initialRoom);
- _logic->newRoom(_initialRoom);
- _logic->display()->fullscreen(true);
- }
- else {
- _logic->joeX(0);
- _logic->joeY(0);
+ _logic->currentRoom(_initialRoom);
+ _logic->changeRoom();
+ if (_logic->currentRoom() == _logic->newRoom()) {
+ _logic->newRoom(0);
+ }
}
+ _logic->joeX(0);
+ _logic->joeY(0);
}
_logic->joeCutFacing(0);