diff --git a/common/map/region.cpp b/common/map/region.cpp new file mode 100644 index 0000000..b4314cf --- /dev/null +++ b/common/map/region.cpp @@ -0,0 +1,46 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * 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. +*/ +#include "region.hpp" + +#include + +Region::Region(int argWidth, int argHeight, int argDepth, int argX, int argY): + width(argWidth), + height(argHeight), + depth(argDepth), + x(argX), + y(argY) +{ + tiles = static_cast(calloc(width * height * depth, sizeof(int))); +} + +Region::~Region() { + free(tiles); +} + +int Region::SetTile(int x, int y, int z, int v) { + return *(tiles + x*width + y*height + z*depth) = v; +} + +int Region::GetTile(int x, int y, int z) { + return *(tiles + x*width + y*height + z*depth); +} diff --git a/common/map/region.hpp b/common/map/region.hpp new file mode 100644 index 0000000..435f271 --- /dev/null +++ b/common/map/region.hpp @@ -0,0 +1,50 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * 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_ + +class Region { +public: + Region() = delete; + Region(int width, int height, int depth, int x, int y); + ~Region(); + + int SetTile(int x, int y, int z, int v); + int GetTile(int x, int y, int z); + + //accessors + int GetWidth() { return width; } + int GetHeight() { return height; } + int GetDepth() { return depth; } + int GetX() { return width; } + int GetY() { return width; } +private: + const int width; + const int height; + const int depth; + const int x; + const int y; + + int* tiles = nullptr; +}; + +#endif