aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/sprite.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2011-12-08 14:50:33 +0100
committerWillem Jan Palenstijn2011-12-08 19:18:27 +0100
commite40f1af3dcc282585cd8f9d173d81657ec4dc0cc (patch)
treebccc2f4b5a490ca1db632afcfe1dec627a732fbf /engines/dreamweb/sprite.cpp
parente8ccbe355851e17a6a5912f3b5c6bb0ef2a48810 (diff)
downloadscummvm-rg350-e40f1af3dcc282585cd8f9d173d81657ec4dc0cc.tar.gz
scummvm-rg350-e40f1af3dcc282585cd8f9d173d81657ec4dc0cc.tar.bz2
scummvm-rg350-e40f1af3dcc282585cd8f9d173d81657ec4dc0cc.zip
DREAMWEB: Remove globals kCurrentframe, kTakeoff
Diffstat (limited to 'engines/dreamweb/sprite.cpp')
-rw-r--r--engines/dreamweb/sprite.cpp51
1 files changed, 23 insertions, 28 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 992a080f6c..b14cfc554c 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -464,36 +464,33 @@ void DreamGenContext::faceRightWay() {
data.byte(kLeavedirection) = dir;
}
-// Locate the reel segment (reel1, reel2, reel3) this frame is stored in.
-// The return value is a pointer to the start of the segment.
-// data.word(kCurrentframe) - data.word(kTakeoff) is the number of the frame
-// inside that segment
-Frame *DreamGenContext::findSource() {
- uint16 currentFrame = data.word(kCurrentframe);
- if (currentFrame < 160) {
- data.word(kTakeoff) = 0;
- return (Frame *)getSegment(data.word(kReel1)).ptr(0, 0);
- } else if (currentFrame < 320) {
- data.word(kTakeoff) = 160;
- return (Frame *)getSegment(data.word(kReel2)).ptr(0, 0);
- } else {
- data.word(kTakeoff) = 320;
- return (Frame *)getSegment(data.word(kReel3)).ptr(0, 0);
- }
-}
-
Reel *DreamBase::getReelStart(uint16 reelPointer) {
Reel *reel = (Reel *)getSegment(data.word(kReels)).ptr(kReellist + reelPointer * sizeof(Reel) * 8, sizeof(Reel));
return reel;
}
-void DreamGenContext::showReelFrame(Reel *reel) {
+// Locate the reel segment (reel1, reel2, reel3) this frame is stored in,
+// and adjust the frame number relative to this segment.
+const Frame *DreamBase::findSource(uint16 &frame) {
+ uint16 base;
+ if (frame < 160) {
+ base = data.word(kReel1);
+ } else if (frame < 320) {
+ frame -= 160;
+ base = data.word(kReel2);
+ } else {
+ frame -= 320;
+ base = data.word(kReel3);
+ }
+ return (const Frame *)getSegment(base).ptr(0, (frame+1)*sizeof(Frame));
+}
+
+void DreamBase::showReelFrame(Reel *reel) {
uint16 x = reel->x + data.word(kMapadx);
uint16 y = reel->y + data.word(kMapady);
- data.word(kCurrentframe) = reel->frame();
- Frame *source = findSource();
- uint16 frame = data.word(kCurrentframe) - data.word(kTakeoff);
- showFrame(source, x, y, frame, 8);
+ uint16 frame = reel->frame();
+ const Frame *base = findSource(frame);
+ showFrame(base, x, y, frame, 8);
}
void DreamGenContext::showGameReel() {
@@ -508,11 +505,9 @@ void DreamGenContext::showGameReel(ReelRoutine *routine) {
routine->setReelPointer(reelPointer);
}
-const Frame *DreamGenContext::getReelFrameAX(uint16 frame) {
- data.word(kCurrentframe) = frame;
- Frame *source = findSource();
- uint16 offset = data.word(kCurrentframe) - data.word(kTakeoff);
- return source + offset;
+const Frame *DreamBase::getReelFrameAX(uint16 frame) {
+ const Frame *base = findSource(frame);
+ return base + frame;
}
void DreamGenContext::showRain() {