diff options
author | Willem Jan Palenstijn | 2011-12-20 00:06:49 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-12-20 00:06:49 +0100 |
commit | f5e8b3257e5c32c02561e4d26298775fa5547df2 (patch) | |
tree | 30485739f810f2e940d1a15a4d3b0a5d4a67c60c /engines/dreamweb/object.cpp | |
parent | d2375c86eb9afbc7f14273f5c377533a1b10fce5 (diff) | |
download | scummvm-rg350-f5e8b3257e5c32c02561e4d26298775fa5547df2.tar.gz scummvm-rg350-f5e8b3257e5c32c02561e4d26298775fa5547df2.tar.bz2 scummvm-rg350-f5e8b3257e5c32c02561e4d26298775fa5547df2.zip |
DREAMWEB: Fix regressions in intoInv, outOfInv; cleanup selectOb
Diffstat (limited to 'engines/dreamweb/object.cpp')
-rw-r--r-- | engines/dreamweb/object.cpp | 62 |
1 files changed, 25 insertions, 37 deletions
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp index 1cdbca0907..70481407f2 100644 --- a/engines/dreamweb/object.cpp +++ b/engines/dreamweb/object.cpp @@ -393,9 +393,7 @@ void DreamGenContext::findInvPos() { } void DreamGenContext::selectOb() { - es = data.word(kBuffers); - - uint16 objectId = es.word(findInvPosCPP()); + uint16 objectId = getSegment(data.word(kBuffers)).word(findInvPosCPP()); if ((objectId & 0xFF) == 255) { blank(); return; @@ -404,28 +402,19 @@ void DreamGenContext::selectOb() { data.byte(kWithobject) = objectId & 0x00FF; data.byte(kWithtype) = objectId >> 8; - if (objectId == data.word(kOldsubject)) { - if (data.byte(kCommandtype) == 221) { - // Object already selected - if (data.word(kMousebutton) != data.word(kOldbutton) && (data.word(kMousebutton) & 1)) { - delPointer(); - data.byte(kInvopen) = 0; - useRoutine(); - } - return; - } else { + if (objectId != data.word(kOldsubject) || data.byte(kCommandtype) != 221) { + if (objectId == data.word(kOldsubject)) data.byte(kCommandtype) = 221; - } + data.word(kOldsubject) = objectId; + commandWithOb(0, data.byte(kWithtype), data.byte(kWithobject)); } - data.word(kOldsubject) = objectId; - commandWithOb(0, data.byte(kWithtype), data.byte(kWithobject)); + if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) + return; - if (data.word(kMousebutton) != data.word(kOldbutton) && (data.word(kMousebutton) & 1)) { - delPointer(); - data.byte(kInvopen) = 0; - useRoutine(); - } + delPointer(); + data.byte(kInvopen) = 0; + useRoutine(); } void DreamGenContext::setPickup() { @@ -577,11 +566,12 @@ void DreamGenContext::inToInv() { subject = (data.byte(kObjecttype) << 8) | data.byte(kItemframe); - if (subject == data.word(kOldsubject) && data.byte(kCommandtype) != 220) - data.byte(kCommandtype) = 220; - - data.word(kOldsubject) = subject; - commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe)); + if (subject != data.word(kOldsubject) || data.byte(kCommandtype) != 220) { + if (subject == data.word(kOldsubject)) + data.byte(kCommandtype) = 220; + data.word(kOldsubject) = subject; + commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe)); + } if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) return; // notletgo2 @@ -613,18 +603,16 @@ void DreamGenContext::outOfInv() { return; } - if (subject == data.word(kOldsubject) && data.byte(kCommandtype) != 221) - data.byte(kCommandtype) = 221; - - data.word(kOldsubject) = subject; - byte type = subject >> 8; - byte frame = subject & 0xFF; - commandWithOb(36, type, frame); - - if (data.word(kMousebutton) == data.word(kOldbutton)) - return; // notletgo + if (subject != data.word(kOldsubject) || data.byte(kCommandtype) != 221) { + if (subject == data.word(kOldsubject)) + data.byte(kCommandtype) = 221; + data.word(kOldsubject) = subject; + byte type = subject >> 8; + byte frame = subject & 0xFF; + commandWithOb(36, type, frame); + } - if (!(data.word(kMousebutton) & 1)) + if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) return; delPointer(); |