diff options
author | James Brown | 2003-01-14 10:06:56 +0000 |
---|---|---|
committer | James Brown | 2003-01-14 10:06:56 +0000 |
commit | 5bf741f96076fa5fcdc077d5fe0a6f4557bd1dcc (patch) | |
tree | 980a4f529c01bfd637470130a024f690adaa87c1 /scumm/actor.cpp | |
parent | 639cb13da189d269f53a9f895fc6109cd926c211 (diff) | |
download | scummvm-rg350-5bf741f96076fa5fcdc077d5fe0a6f4557bd1dcc.tar.gz scummvm-rg350-5bf741f96076fa5fcdc077d5fe0a6f4557bd1dcc.tar.bz2 scummvm-rg350-5bf741f96076fa5fcdc077d5fe0a6f4557bd1dcc.zip |
Patch 667613: Extend gfxUsageBits[]
svn-id: r6453
Diffstat (limited to 'scumm/actor.cpp')
-rw-r--r-- | scumm/actor.cpp | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp index fc51f7c177..478156bb8f 100644 --- a/scumm/actor.cpp +++ b/scumm/actor.cpp @@ -28,6 +28,7 @@ #include "costume.h" #include "resource.h" #include "sound.h" +#include "usage_bits.h" #include <math.h> @@ -1100,7 +1101,6 @@ void Actor::animateLimb(int limb, int f) void Scumm::setActorRedrawFlags(bool fg, bool bg) { int i, j; - uint32 bits; if (_fullRedraw) { for (j = 0; j < NUM_ACTORS; j++) { @@ -1112,10 +1112,10 @@ void Scumm::setActorRedrawFlags(bool fg, bool bg) } } else { for (i = 0; i < gdi._numStrips; i++) { - bits = gfxUsageBits[_screenStartStrip + i]; - if (bits & 0x3FFFFFFF) { + int strip = _screenStartStrip + i; + if (testGfxAnyUsageBits(strip)) { for (j = 0; j < NUM_ACTORS; j++) { - if ((bits & (1 << j)) && bits != (uint32)(1 << j)) { + if (testGfxUsageBit(strip, j) && testGfxOtherUsageBits(strip, j)) { Actor *a = derefActor(j); if (fg) a->needRedraw = true; @@ -1130,15 +1130,13 @@ void Scumm::setActorRedrawFlags(bool fg, bool bg) int Scumm::getActorFromPos(int x, int y) { - uint32 drawbits; int i; - drawbits = gfxUsageBits[x >> 3]; - if (!(drawbits & 0x3FFFFFFF)) + if (!testGfxAnyUsageBits(x >> 3)) return 0; for (i = 1; i < NUM_ACTORS; i++) { Actor *a = derefActor(i); - if (drawbits & (1 << i) && !getClass(i, 32) && y >= a->top && y <= a->bottom) { + if (testGfxUsageBit(x >> 3, i) && !getClass(i, 32) && y >= a->top && y <= a->bottom) { return i; } } @@ -1541,23 +1539,17 @@ void Actor::remapActorPalette(int r_fact, int g_fact, int b_fact, int threshold) void Scumm::resetActorBgs() { Actor *a; - int i; - uint32 onlyActorFlags, bitpos; + int i, j; for (i = 0; i < gdi._numStrips; i++) { - onlyActorFlags = (gfxUsageBits[_screenStartStrip + i] &= 0x3FFFFFFF); + int strip = _screenStartStrip + i; a = getFirstActor(); - bitpos = 1; - - while (onlyActorFlags) { - if (onlyActorFlags & 1 && a->top != 0xFF && a->needBgReset) { - gfxUsageBits[_screenStartStrip + i] ^= bitpos; - + for (j = 0; j < NUM_ACTORS; j++) { + if (testGfxUsageBit(strip, j) && a->top != 0xFF && a->needBgReset) { + clearGfxUsageBit(strip, j); if ((a->bottom - a->top) >= 0) gdi.resetBackground(a->top, a->bottom, i); } - bitpos <<= 1; - onlyActorFlags >>= 1; a++; } } |