summaryrefslogtreecommitdiffstats
path: root/src/utils
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-01-09 12:09:01 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-01-09 12:09:01 +0100
commit8ff3e6674c1d4fc05fc1ba87f42484689fca0879 (patch)
tree0c05e984fe61d9e28e9bf014d6b4a70645d27a7e /src/utils
parent57701ac70f2b81e11eedb4c01f680e46c1abadb2 (diff)
downloadmanaserv-8ff3e6674c1d4fc05fc1ba87f42484689fca0879.tar.gz
manaserv-8ff3e6674c1d4fc05fc1ba87f42484689fca0879.tar.xz
manaserv-8ff3e6674c1d4fc05fc1ba87f42484689fca0879.zip
Removed the superfluous point struct.
It was too close from the Position class and it leads to making the server handle one or another type through the code. Still bugged me many times while making changes. Reviewed-by: Jaxad.
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/point.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/utils/point.h b/src/utils/point.h
new file mode 100644
index 0000000..0ebc37c
--- /dev/null
+++ b/src/utils/point.h
@@ -0,0 +1,90 @@
+/*
+ * The Mana Server
+ * Copyright (C) 2004-2010 The Mana World Development Team
+ *
+ * This file is part of The Mana Server.
+ *
+ * The Mana Server is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * The Mana Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Mana Server. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef POINT_H
+#define POINT_H
+
+#include <algorithm>
+
+/**
+ * A point in positive space. Usually represents pixel coordinates on a map.
+ */
+class Point
+{
+ public:
+ Point():
+ x(0), y(0)
+ {}
+
+ Point(int X, int Y):
+ x(X), y(Y)
+ {}
+
+ int x; /**< x coordinate */
+ int y; /**< y coordinate */
+
+ /**
+ * Check whether the given point is within range of this point.
+ */
+ bool inRangeOf(const Point &p, int radius) const
+ {
+ return std::abs(x - p.x) <= radius &&
+ std::abs(y - p.y) <= radius;
+ }
+
+ bool operator== (const Point &other) const
+ {
+ return (x == other.x && y == other.y);
+ }
+
+ bool operator!= (const Point &other) const
+ {
+ return (x != other.x || y != other.y);
+ }
+};
+
+/**
+ * A rectangle in positive space. Usually represents a pixel-based zone on a
+ * map.
+ */
+class Rectangle
+{
+ public:
+ int x; /**< x coordinate */
+ int y; /**< y coordinate */
+ int w; /**< width */
+ int h; /**< height */
+
+ bool contains(const Point &p) const
+ {
+ return (p.x - x) < w &&
+ (p.y - y) < h;
+ }
+
+ bool intersects(const Rectangle &r) const
+ {
+ return x < (r.x + r.w) &&
+ y < (r.y + r.h) &&
+ x + w > r.x &&
+ y + h > r.y;
+ }
+};
+
+#endif // POINT_H