summaryrefslogtreecommitdiff
path: root/src/beingmanager.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2008-03-23 01:27:13 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2008-03-23 01:27:13 +0000
commit9dd811b55587aeb76344b835006cb4a01601bb5d (patch)
treebd297391e264a09ce8467bcf780927a4cef09991 /src/beingmanager.cpp
parentbd8a35eca8c2fa6eb33e7d9219e3fa4d287a2059 (diff)
downloadmana-9dd811b55587aeb76344b835006cb4a01601bb5d.tar.gz
mana-9dd811b55587aeb76344b835006cb4a01601bb5d.tar.bz2
mana-9dd811b55587aeb76344b835006cb4a01601bb5d.tar.xz
mana-9dd811b55587aeb76344b835006cb4a01601bb5d.zip
Merged revisions 3823,3825-3826,3829,3831-3839,3841-3842 via svnmerge from
https://themanaworld.svn.sourceforge.net/svnroot/themanaworld/tmw/branches/0.0 ........ r3823 | crush_tmw | 2007-12-28 19:36:58 +0100 (Fri, 28 Dec 2007) | 1 line Added the possibility to assign particle effects to monsters in the monster database. Added flame particle effect to fire goblin as a proof of concept. ........ r3826 | crush_tmw | 2007-12-30 01:02:14 +0100 (Sun, 30 Dec 2007) | 1 line Added a key for targeting the nearest player character based on patches by Trinexx. Some mapping fixes at snake dungeon map. ........ r3839 | the_enemy | 2008-01-13 17:28:50 +0100 (Sun, 13 Jan 2008) | 1 line Fixed non-default location music loading ........ r3842 | crush_tmw | 2008-01-14 11:48:13 +0100 (Mon, 14 Jan 2008) | 1 line ixed an error in Davids last commit (couldn't compile that way). ........
Diffstat (limited to 'src/beingmanager.cpp')
-rw-r--r--src/beingmanager.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp
index 8ef3de1e..214a1995 100644
--- a/src/beingmanager.cpp
+++ b/src/beingmanager.cpp
@@ -180,3 +180,30 @@ Being* BeingManager::findNearestLivingBeing(Uint16 x, Uint16 y, int maxdist,
return (maxdist >= dist) ? closestBeing : NULL;
}
+
+Being* BeingManager::findNearestLivingBeing(Being *aroundBeing, int maxdist,
+ Being::Type type)
+{
+ Being *closestBeing = NULL;
+ int dist = 0;
+ int x = aroundBeing->mX;
+ int y = aroundBeing->mY;
+
+ for (BeingIterator i = mBeings.begin(); i != mBeings.end(); i++)
+ {
+ Being *being = (*i);
+ int d = abs(being->mX - x) + abs(being->mY - y);
+
+ if ((being->getType() == type || type == Being::UNKNOWN)
+ && (d < dist || closestBeing == NULL) // it is closer
+ && being->mAction != Being::DEAD // no dead beings
+ && being != aroundBeing
+ )
+ {
+ dist = d;
+ closestBeing = being;
+ }
+ }
+
+ return (maxdist >= dist) ? closestBeing : NULL;
+}