Switched the hack for the bitset

I've also added acessors and mutators to the Region and RegionPagerBase
classes.
This commit is contained in:
Kayne Ruse
2014-07-01 22:55:43 +10:00
parent 8df1ecd804
commit 8ed308e89a
6 changed files with 59 additions and 29 deletions
+15 -1
View File
@@ -22,10 +22,17 @@
#ifndef REGION_HPP_
#define REGION_HPP_
#include <bitset>
#include <cmath>
//the region's storage format
constexpr int REGION_WIDTH = 21;
constexpr int REGION_HEIGHT = 21;
constexpr int REGION_DEPTH = 3;
//the size of the solid map
constexpr int REGION_SOLID = ceil(REGION_WIDTH * REGION_HEIGHT / 8.0);
class Region {
public:
typedef unsigned char type_t;
@@ -38,6 +45,9 @@ public:
type_t SetTile(int x, int y, int z, type_t v);
type_t GetTile(int x, int y, int z);
bool SetSolid(int x, int y, bool b);
bool GetSolid(int x, int y);
//accessors
int GetX() const { return x; }
int GetY() const { return y; }
@@ -45,7 +55,11 @@ private:
const int x;
const int y;
type_t tiles[REGION_WIDTH][REGION_HEIGHT][REGION_DEPTH+1];
type_t tiles[REGION_WIDTH][REGION_HEIGHT][REGION_DEPTH];
std::bitset<REGION_SOLID> solid;
};
//the memory footprint of the tile and solid data; not including any metadata
constexpr int REGION_FOOTPRINT = REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH * sizeof(Region::type_t) + REGION_SOLID;
#endif