aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorJonathan Gray2003-02-27 10:17:29 +0000
committerJonathan Gray2003-02-27 10:17:29 +0000
commitaf19cac73829f9a24aea694052e274b6dd2d146b (patch)
treebd0c152f61ba888f154df7dbe2365cfcfdb5ebc7 /scumm
parent686ba621f72121849cd9a37db7b968957bde3235 (diff)
downloadscummvm-rg350-af19cac73829f9a24aea694052e274b6dd2d146b.tar.gz
scummvm-rg350-af19cac73829f9a24aea694052e274b6dd2d146b.tar.bz2
scummvm-rg350-af19cac73829f9a24aea694052e274b6dd2d146b.zip
patch #689164 comi verb coin hack by erik, fixes the verb coin drawing behind the inventory
svn-id: r6642
Diffstat (limited to 'scumm')
-rw-r--r--scumm/actor.cpp19
-rw-r--r--scumm/scumm.h1
-rw-r--r--scumm/scummvm.cpp2
3 files changed, 22 insertions, 0 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp
index 9daa547bbd..e2ab510cf3 100644
--- a/scumm/actor.cpp
+++ b/scumm/actor.cpp
@@ -868,6 +868,8 @@ void Scumm::processActors()
// Make a list of all actors in this room
for (i = 1; i < NUM_ACTORS; i++) {
a = derefActor(i);
+ if ((_features & GF_AFTER_V8) && a->layer < 0)
+ continue;
if (a->isInCurrentRoom())
actors[numactors++] = a;
}
@@ -903,6 +905,23 @@ void Scumm::processActors()
delete [] actors;
}
+// Used in Scumm v8, to allow the verb coin to be drawn over the inventory
+// chest. I'm assuming that draw order won't matter here.
+void Scumm::processUpperActors()
+{
+ Actor *a;
+ int i;
+
+ for (i = 1; i < NUM_ACTORS; i++) {
+ a = derefActor(i);
+ if (a->isInCurrentRoom() && a->costume && a->layer < 0) {
+ CHECK_HEAP getMaskFromBox(a->walkbox);
+ a->drawActorCostume();
+ CHECK_HEAP a->animateCostume();
+ }
+ }
+}
+
void Actor::drawActorCostume()
{
if (!needRedraw)
diff --git a/scumm/scumm.h b/scumm/scumm.h
index eeb8c7b208..e2547d65c0 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -673,6 +673,7 @@ public:
void setActorRedrawFlags(bool fg, bool bg);
void resetActorBgs();
void processActors();
+ void processUpperActors();
int getActorFromPos(int x, int y);
void actorFollowCamera(int act);
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 2472dc70a1..f603579892 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -562,6 +562,8 @@ int Scumm::scummLoop(int delta)
}
drawBlastObjects();
+ if (_features & GF_AFTER_V8)
+ processUpperActors();
drawBlastTexts();
drawDirtyScreenParts();
removeBlastObjects();