From e705759b7bac28dd1c00d8a655289366535bb0d1 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 31 Mar 2011 01:16:47 +0200 Subject: MOHAWK: Implement kLBSetHitTest. --- engines/mohawk/livingbooks.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'engines/mohawk/livingbooks.cpp') diff --git a/engines/mohawk/livingbooks.cpp b/engines/mohawk/livingbooks.cpp index de87c7fea6..553940dfda 100644 --- a/engines/mohawk/livingbooks.cpp +++ b/engines/mohawk/livingbooks.cpp @@ -1798,6 +1798,7 @@ LBItem::LBItem(MohawkEngine_LivingBooks *vm, Common::Rect rect) : _vm(vm), _rect _loops = 0; _isAmbient = false; + _doHitTest = true; } LBItem::~LBItem() { @@ -2145,9 +2146,9 @@ void LBItem::readData(uint16 type, uint16 size, Common::SeekableSubReadStreamEnd case kLBSetHitTest: { assert(size == 2); - uint id = stream->readUint16(); - warning("kLBSetHitTest: unknown: item %s, value %04x", _desc.c_str(), id); - // FIXME + uint val = stream->readUint16(); + _doHitTest = (bool)val; + debug(2, "kLBSetHitTest (on %s): value %04x", _desc.c_str(), val); } break; @@ -3446,6 +3447,9 @@ bool LBPictureItem::contains(Common::Point point) { if (!LBItem::contains(point)) return false; + if (!_doHitTest) + return true; + // TODO: only check pixels if necessary return !_vm->_gfx->imageIsTransparentAt(_resourceId, false, point.x - _rect.left, point.y - _rect.top); } @@ -3485,7 +3489,13 @@ void LBAnimationItem::setEnabled(bool enabled) { } bool LBAnimationItem::contains(Common::Point point) { - return LBItem::contains(point) && !_anim->transparentAt(point.x, point.y); + if (!LBItem::contains(point)) + return false; + + if (!_doHitTest) + return true; + + return !_anim->transparentAt(point.x, point.y); } void LBAnimationItem::update() { -- cgit v1.2.3