aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/anim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/toon/anim.cpp')
-rw-r--r--engines/toon/anim.cpp49
1 files changed, 19 insertions, 30 deletions
diff --git a/engines/toon/anim.cpp b/engines/toon/anim.cpp
index 98c667c303..84f6fa375c 100644
--- a/engines/toon/anim.cpp
+++ b/engines/toon/anim.cpp
@@ -229,37 +229,26 @@ void Animation::drawFrameWithMaskAndScale(Graphics::Surface &surface, int32 fram
uint8 *curRow = (uint8 *)surface.pixels;
uint8 *curRowMask = mask->getDataPtr();
- if (strstr(_name, "SHADOW")) {
- for (int y = yy1; y < yy2; y++) {
- for (int x = xx1; x < xx2; x++) {
- if (x < 0 || x >= 1280 || y < 0 || y >= 400)
- continue;
-
- uint8 *cur = curRow + x + y * destPitch;
- uint8 *curMask = curRowMask + x + y * destPitchMask;
-
- // find the good c
- int32 xs = (x - xx1) * 1024 / scale;
- int32 ys = (y - yy1) * 1024 / scale;
- uint8 *cc = &c[ys * w + xs];
- if (*cc && ((*curMask) >= zz))
+ bool shadowFlag = false;
+ if (strstr(_name, "SHADOW"))
+ shadowFlag = true;
+
+ for (int32 y = yy1; y < yy2; y++) {
+ for (int32 x = xx1; x < xx2; x++) {
+ if (x < 0 || x >= 1280 || y < 0 || y >= 400)
+ continue;
+
+ uint8 *cur = curRow + x + y * destPitch;
+ uint8 *curMask = curRowMask + x + y * destPitchMask;
+
+ // find the good c
+ int32 xs = (x - xx1) * 1024 / scale;
+ int32 ys = (y - yy1) * 1024 / scale;
+ uint8 *cc = &c[ys * w + xs];
+ if (*cc && ((*curMask) >= zz)) {
+ if (shadowFlag)
*cur = _vm->getShadowLUT()[*cur];
- }
- }
- } else {
- for (int y = yy1; y < yy2; y++) {
- for (int x = xx1; x < xx2; x++) {
- if (x < 0 || x >= 1280 || y < 0 || y >= 400)
- continue;
-
- uint8 *cur = curRow + x + y * destPitch;
- uint8 *curMask = curRowMask + x + y * destPitchMask;
-
- // find the good c
- int32 xs = (x - xx1) * 1024 / scale;
- int32 ys = (y - yy1) * 1024 / scale;
- uint8 *cc = &c[ys * w + xs];
- if (*cc && ((*curMask) >= zz))
+ else
*cur = *cc;
}
}