aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/sprite.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2011-11-16 23:56:52 +0100
committerWillem Jan Palenstijn2011-11-16 23:57:26 +0100
commitef2f98953f37b3d264f00d5e841376c5b4c296eb (patch)
tree885fb7249d21283d134d7208b1ca90236b2d3f1d /engines/dreamweb/sprite.cpp
parentba798e250d8e8abef2213425384fa81bec3ff5f6 (diff)
downloadscummvm-rg350-ef2f98953f37b3d264f00d5e841376c5b4c296eb.tar.gz
scummvm-rg350-ef2f98953f37b3d264f00d5e841376c5b4c296eb.tar.bz2
scummvm-rg350-ef2f98953f37b3d264f00d5e841376c5b4c296eb.zip
DREAMWEB: Clean up 'lockeddoorway'
Diffstat (limited to 'engines/dreamweb/sprite.cpp')
-rw-r--r--engines/dreamweb/sprite.cpp88
1 files changed, 39 insertions, 49 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 7bbe2989f8..a03de8caf1 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -359,66 +359,56 @@ void DreamGenContext::steady(Sprite *sprite, SetObject *objData) {
}
void DreamGenContext::lockeddoorway(Sprite *sprite, SetObject *objData) {
- if (data.byte(kRyanx) < sprite->x) {
- if (sprite->x - data.byte(kRyanx) > 24)
- goto shutdoor2;
- } else {
- if (data.byte(kRyanx) - sprite->x >= 10)
- goto shutdoor2;
- }
- if (data.byte(kRyany) < sprite->y) {
- if (sprite->y - data.byte(kRyany) > 30)
- goto shutdoor2;
- } else {
- if (data.byte(kRyany) - sprite->y >= 12)
- goto shutdoor2;
- }
+ int ryanx = data.byte(kRyanx);
+ int ryany = data.byte(kRyany);
- if (data.byte(kThroughdoor) != 1) {
- if (data.byte(kLockstatus) == 1)
- goto shutdoor2;
- }
+ Common::Rect check(-24, -30, 10, 12);
+ check.translate(sprite->x, sprite->y);
+ bool openDoor = check.contains(ryanx, ryany);
- if (sprite->frame == 1) {
- al = 0;
- playchannel1();
- }
+ if (data.byte(kThroughdoor) != 1 && data.byte(kLockstatus) == 1)
+ openDoor = false;
- if (sprite->frame == 6) {
- turnpathon(data.byte(kDoorpath));
- }
+ if (openDoor) {
- if ((data.byte(kThroughdoor) == 1) && (sprite->frame == 0)) {
- sprite->frame = 6;
- }
+ if (sprite->frame == 1) {
+ al = 0;
+ playchannel1();
+ }
- ++sprite->frame;
- if (objData->b18[sprite->frame] == 255) {
- --sprite->frame;
- }
+ if (sprite->frame == 6)
+ turnpathon(data.byte(kDoorpath));
- sprite->b15 = objData->index = objData->b18[sprite->frame];
- if (sprite->frame == 5)
- data.byte(kThroughdoor) = 1;
- return;
+ if (data.byte(kThroughdoor) == 1 && sprite->frame == 0)
+ sprite->frame = 6;
-shutdoor2:
- if (sprite->frame == 5) {
- al = 1;
- playchannel1();
- }
+ ++sprite->frame;
+ if (objData->b18[sprite->frame] == 255)
+ --sprite->frame;
- if (sprite->frame != 0) {
- --sprite->frame;
- }
+ sprite->b15 = objData->index = objData->b18[sprite->frame];
+ if (sprite->frame == 5)
+ data.byte(kThroughdoor) = 1;
- data.byte(kThroughdoor) = 0;
- sprite->b15 = objData->index = objData->b18[sprite->frame];
+ } else {
+ // shut door
- if (sprite->frame == 0) {
- turnpathoff(data.byte(kDoorpath));
- data.byte(kLockstatus) = 1;
+ if (sprite->frame == 5) {
+ al = 1;
+ playchannel1();
+ }
+
+ if (sprite->frame != 0)
+ --sprite->frame;
+
+ data.byte(kThroughdoor) = 0;
+ sprite->b15 = objData->index = objData->b18[sprite->frame];
+
+ if (sprite->frame == 0) {
+ turnpathoff(data.byte(kDoorpath));
+ data.byte(kLockstatus) = 1;
+ }
}
}