diff options
-rw-r--r-- | engines/sci/engine/kgraphics32.cpp | 10 | ||||
-rw-r--r-- | engines/sci/graphics/compare.cpp | 10 | ||||
-rw-r--r-- | engines/sci/graphics/compare.h | 2 |
3 files changed, 11 insertions, 11 deletions
diff --git a/engines/sci/engine/kgraphics32.cpp b/engines/sci/engine/kgraphics32.cpp index cd735d1233..0eb4fa856b 100644 --- a/engines/sci/engine/kgraphics32.cpp +++ b/engines/sci/engine/kgraphics32.cpp @@ -142,7 +142,15 @@ reg_t kIsOnMe(EngineState *s, int argc, reg_t *argv) { uint16 y = argv[1].toUint16(); reg_t targetObject = argv[2]; uint16 illegalBits = argv[3].getOffset(); - Common::Rect nsRect = g_sci->_gfxCompare->getNSRect(targetObject, true); + Common::Rect nsRect = g_sci->_gfxCompare->getNSRect(targetObject); + + uint16 itemX = readSelectorValue(s->_segMan, targetObject, SELECTOR(x)); + uint16 itemY = readSelectorValue(s->_segMan, targetObject, SELECTOR(y)); + // If top and left are negative, we need to adjust coordinates by the item's x and y + if (nsRect.left < 0) + nsRect.translate(itemX, 0); + if (nsRect.top < 0) + nsRect.translate(0, itemY); // we assume that x, y are local coordinates diff --git a/engines/sci/graphics/compare.cpp b/engines/sci/graphics/compare.cpp index b42063b119..8b89cf4a65 100644 --- a/engines/sci/graphics/compare.cpp +++ b/engines/sci/graphics/compare.cpp @@ -241,21 +241,13 @@ void GfxCompare::kernelBaseSetter(reg_t object) { } } -Common::Rect GfxCompare::getNSRect(reg_t object, bool fixRect) { +Common::Rect GfxCompare::getNSRect(reg_t object) { Common::Rect nsRect; nsRect.top = readSelectorValue(_segMan, object, SELECTOR(nsTop)); nsRect.left = readSelectorValue(_segMan, object, SELECTOR(nsLeft)); nsRect.bottom = readSelectorValue(_segMan, object, SELECTOR(nsBottom)); nsRect.right = readSelectorValue(_segMan, object, SELECTOR(nsRight)); - if (fixRect) { - // nsRect top/left may be negative, adjust accordingly - if (nsRect.top < 0) - nsRect.top = 0; - if (nsRect.left < 0) - nsRect.left = 0; - } - return nsRect; } diff --git a/engines/sci/graphics/compare.h b/engines/sci/graphics/compare.h index 0080406a3b..48e9e376b5 100644 --- a/engines/sci/graphics/compare.h +++ b/engines/sci/graphics/compare.h @@ -42,7 +42,7 @@ public: reg_t kernelCanBeHere(reg_t curObject, reg_t listReference); bool kernelIsItSkip(GuiResourceId viewId, int16 loopNo, int16 celNo, Common::Point position); void kernelBaseSetter(reg_t object); - Common::Rect getNSRect(reg_t object, bool fixRect = false); + Common::Rect getNSRect(reg_t object); void setNSRect(reg_t object, Common::Rect nsRect); private: |