diff options
author | Joost Peters | 2004-01-27 16:56:11 +0000 |
---|---|---|
committer | Joost Peters | 2004-01-27 16:56:11 +0000 |
commit | 33e613b5c79a9960a5ba3af71c285d28b4623b0a (patch) | |
tree | 3a6069a517e98234766bd17cf902d1e3dc544b80 | |
parent | 832155b8cfbe2c99c704bae5b01dd2303c8b7763 (diff) | |
download | scummvm-rg350-33e613b5c79a9960a5ba3af71c285d28b4623b0a.tar.gz scummvm-rg350-33e613b5c79a9960a5ba3af71c285d28b4623b0a.tar.bz2 scummvm-rg350-33e613b5c79a9960a5ba3af71c285d28b4623b0a.zip |
Proper fix for bug #884712
svn-id: r12635
-rw-r--r-- | queen/graphics.cpp | 2 | ||||
-rw-r--r-- | queen/logic.cpp | 10 | ||||
-rw-r--r-- | queen/logic.h | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/queen/graphics.cpp b/queen/graphics.cpp index 44bf4add97..aac0872abd 100644 --- a/queen/graphics.cpp +++ b/queen/graphics.cpp @@ -783,7 +783,7 @@ uint16 Graphics::refreshObject(uint16 obj) { pbs->clear(); } else { // find person number - uint16 pNum = _vm->logic()->findPersonNumber(obj); + uint16 pNum = _vm->logic()->findPersonNumber(obj, _vm->logic()->currentRoom()); curImage = _personFrames[pNum] - 1; if (_personFrames[pNum] == 0) { _personFrames[pNum] = curImage = _numFrames; diff --git a/queen/logic.cpp b/queen/logic.cpp index 7eb5617eeb..c4d218dc46 100644 --- a/queen/logic.cpp +++ b/queen/logic.cpp @@ -267,7 +267,7 @@ uint16 Logic::findBob(uint16 obj) { if(img != 0) { if(img == -3 || img == -4) { // a person object - bobnum = findPersonNumber(obj); + bobnum = findPersonNumber(obj, room); } else { uint16 bobtype = 0; // 1 for animated, 0 for static @@ -337,7 +337,7 @@ uint16 Logic::findFrame(uint16 obj) { uint16 room = _objectData[obj].room; int16 img = _objectData[obj].image; if(img == -3 || img == -4) { - uint16 bobnum = findPersonNumber(obj); + uint16 bobnum = findPersonNumber(obj, room); if(bobnum <= 3) { framenum = 29 + FRAMES_JOE_XTRA + bobnum; } @@ -538,7 +538,7 @@ ActorData *Logic::findActor(uint16 noun, const char *name) const { } // search Bob number for the person - uint16 bobNum = findPersonNumber(obj); + uint16 bobNum = findPersonNumber(obj, _currentRoom); // search for a matching actor if (bobNum > 0) { @@ -575,10 +575,10 @@ bool Logic::initPerson(uint16 noun, const char *actorName, bool loadBank, Person return pad != NULL; } -uint16 Logic::findPersonNumber(uint16 obj) const { +uint16 Logic::findPersonNumber(uint16 obj, uint16 room) const { uint16 num = 0; uint16 i; - for (i = currentRoomData() + 1; i <= obj; ++i) { + for (i = _roomData[room] + 1; i <= obj; ++i) { int16 img = _objectData[i].image; if (img == -3 || img == -4) { ++num; diff --git a/queen/logic.h b/queen/logic.h index 4a83d07a2f..b61d06d6cd 100644 --- a/queen/logic.h +++ b/queen/logic.h @@ -130,7 +130,7 @@ public: ActorData *findActor(uint16 noun, const char *name = NULL) const; bool initPerson(uint16 noun, const char *actorName, bool loadBank, Person *pp); - uint16 findPersonNumber(uint16 obj) const; + uint16 findPersonNumber(uint16 obj, uint16 room) const; void loadJoeBanks(const char *animBank, const char *standBank); |