diff options
Diffstat (limited to 'src/beingmanager.cpp')
-rw-r--r-- | src/beingmanager.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index 2ab29fd2..40f438df 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -117,6 +117,28 @@ Being* BeingManager::findBeing(Uint16 x, Uint16 y, Being::Type type) return (i == mBeings.end()) ? NULL : *i; } +Being* BeingManager::findBeingByPixel(Uint16 x, Uint16 y) +{ + BeingIterator itr = mBeings.begin(); + BeingIterator itr_end = mBeings.end(); + + for (; itr != itr_end; ++itr) + { + Being *being = (*itr); + if ((being->mAction != Being::DEAD) && + (being != player_node) && + (being->getPixelX() <= x) && + (being->getPixelX() + being->getWidth() >= x) && + (being->getPixelY() <= y) && + (being->getPixelY() + being->getHeight() >= y)) + { + return being; + } + } + + return NULL; +} + Beings& BeingManager::getAll() { return mBeings; |