summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-08-26 00:01:29 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-08-26 00:01:29 +0200
commit054891b516cea1b30a19cc9effb44ecbcf74319d (patch)
tree394155a21f315c360624e4dba9542fbab20303f2
parentec99e999a918f6680d38704d9408933090d0386a (diff)
downloadmanaserv-054891b516cea1b30a19cc9effb44ecbcf74319d.tar.gz
manaserv-054891b516cea1b30a19cc9effb44ecbcf74319d.tar.bz2
manaserv-054891b516cea1b30a19cc9effb44ecbcf74319d.tar.xz
manaserv-054891b516cea1b30a19cc9effb44ecbcf74319d.zip
Fixed the trigger area declared within map files.
The bug was pretty generic, as the contains() method of the Rectangle class wasn't checking against left and top sides according to the client view point. Resolves: Mana-Mantis #317.
-rw-r--r--src/game-server/trigger.cpp6
-rw-r--r--src/utils/point.h4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/game-server/trigger.cpp b/src/game-server/trigger.cpp
index f25b00b8..19ca3512 100644
--- a/src/game-server/trigger.cpp
+++ b/src/game-server/trigger.cpp
@@ -55,7 +55,11 @@ void TriggerArea::update()
//skip garbage
if (!(*i) || (*i)->getPublicID() == 0) continue;
- if (mZone.contains((*i)->getPosition())) //<-- Why is this additional condition necessary? Shouldn't getInsideRectangleIterator already exclude those outside of the zone? --Crush
+ // The BeingIterator returns the mapZones in touch with the rectangle
+ // area. On the other hand, the beings contained in the map zones
+ // may not be within the rectangle area. Hence, this additional
+ // contains() condition.
+ if (mZone.contains((*i)->getPosition()))
{
insideNow.insert(*i);
diff --git a/src/utils/point.h b/src/utils/point.h
index 4402aa09..ccd3d2c6 100644
--- a/src/utils/point.h
+++ b/src/utils/point.h
@@ -75,8 +75,8 @@ class Rectangle
bool contains(const Point &p) const
{
- return (p.x - x) < w &&
- (p.y - y) < h;
+ return (p.x >= x && p.x <= x + w &&
+ p.y >= y && p.y <= y + h);
}
bool intersects(const Rectangle &r) const