From 8ff3e6674c1d4fc05fc1ba87f42484689fca0879 Mon Sep 17 00:00:00 2001 From: Yohann Ferreira Date: Sun, 9 Jan 2011 12:09:01 +0100 Subject: 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. --- src/utils/point.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/utils/point.h (limited to 'src/utils') 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 . + */ + +#ifndef POINT_H +#define POINT_H + +#include + +/** + * 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 -- cgit