/* Copyright: (c) Kayne Ruse 2013 * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. */ #ifndef REGION_HPP_ #define REGION_HPP_ #include "tile.hpp" #include class Region { public: Region() = delete; Region(int x, int y, int width, int height); ~Region() = default; bool NewTile(Tile const&); Tile GetTile(int x, int y, int tw, int th, int minDepth); bool DeleteTile(int x, int y, int tw, int th, int minDepth) { return DeleteTile(GetTile(x, y, tw, th, minDepth)); } bool DeleteTile(Tile const&); bool InBounds(int x, int y); //accessors & mutators int GetX() const { return x; } int GetY() const { return y; } int GetWidth() const { return width; } int GetHeight() const { return height; } std::set* GetTiles() { return &tiles; } friend bool operator<(Region const& lhs, Region const& rhs); friend bool operator>(Region const& lhs, Region const& rhs); friend bool operator==(Region const& lhs, Region const& rhs); private: int const x; int const y; int const width; int const height; std::set tiles; }; #endif