diff options
Diffstat (limited to 'engines/fullpipe/scene.cpp')
-rw-r--r-- | engines/fullpipe/scene.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp index 95d2876ca9..25d70770f0 100644 --- a/engines/fullpipe/scene.cpp +++ b/engines/fullpipe/scene.cpp @@ -483,15 +483,34 @@ StaticANIObject *Scene::getStaticANIObjectAtPos(int x, int y) { } PictureObject *Scene::getPictureObjectAtPos(int x, int y) { - warning("STUB: Scene::getPictureObjectAtPos(%d, %d)", x, y); + PictureObject *res = 0; - return 0; + for (uint i = 0; i < _picObjList.size(); i++) { + PictureObject *p = (PictureObject *)_picObjList[i]; + if ((p->_field_8 & 1) && (p->_flags & 4) && + p->isPixelHitAtPos(x, y) && + (!res || res->_priority >= p->_priority)) + res = p; + } + + return res; } int Scene::getPictureObjectIdAtPos(int x, int y) { - warning("STUB: Scene::getPictureObjectIdAtPos(%d, %d)", x, y); + PictureObject *resp = 0; + int res = 0; - return 0; + for (uint i = 0; i < _picObjList.size(); i++) { + PictureObject *p = (PictureObject *)_picObjList[i]; + if ((p->_field_8 & 1) && (p->_flags & 4) && + p->isPixelHitAtPos(x, y) && + (!res || resp->_priority >= p->_priority)) { + resp = p; + res = p->_id; + } + } + + return res; } void Scene::update(int counterdiff) { |