diff options
author | Willem Jan Palenstijn | 2011-11-16 23:56:52 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-11-16 23:57:26 +0100 |
commit | ef2f98953f37b3d264f00d5e841376c5b4c296eb (patch) | |
tree | 885fb7249d21283d134d7208b1ca90236b2d3f1d /engines/dreamweb/sprite.cpp | |
parent | ba798e250d8e8abef2213425384fa81bec3ff5f6 (diff) | |
download | scummvm-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.cpp | 88 |
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; + } } } |