Split the pager class into two
I've also made the base class abstract, and the derived class a template. Hopefully this'll let me work on different parts of the class without major issues. This code compiles, but since it's incomplete, I can't test it properly.
This commit is contained in:
@@ -26,31 +26,67 @@
|
||||
|
||||
#include <list>
|
||||
|
||||
class RegionPager {
|
||||
class RegionPagerBase {
|
||||
public:
|
||||
RegionPager() = delete;
|
||||
RegionPager(int regionWidth, int regionHeight, int regionDepth);
|
||||
~RegionPager();
|
||||
RegionPagerBase() = delete;
|
||||
RegionPagerBase(int regionWidth, int regionHeight, int regionDepth);
|
||||
~RegionPagerBase();
|
||||
|
||||
int SetTile(int x, int y, int z, int v);
|
||||
int GetTile(int x, int y, int z);
|
||||
|
||||
void Update();
|
||||
|
||||
Region* GetRegion(int x, int y);
|
||||
|
||||
void LoadRegion(int x, int y);
|
||||
void SaveRegion(int x, int y);
|
||||
void CreateRegion(int x, int y);
|
||||
void UnloadRegion(int x, int y);
|
||||
//interface
|
||||
virtual Region* LoadRegion(int x, int y) = 0;
|
||||
virtual Region* SaveRegion(int x, int y) = 0;
|
||||
virtual Region* CreateRegion(int x, int y) = 0;
|
||||
virtual void UnloadRegion(int x, int y) = 0;
|
||||
|
||||
//accessors
|
||||
int GetRegionWidth() { return regionWidth; }
|
||||
int GetRegionHeight() { return regionHeight; }
|
||||
int GetRegionDepth() { return regionDepth; }
|
||||
private:
|
||||
protected:
|
||||
const int regionWidth;
|
||||
const int regionHeight;
|
||||
const int regionDepth;
|
||||
std::list<Region> regionList;
|
||||
};
|
||||
|
||||
template<typename MapGenerator, typename MapFileFormat>
|
||||
class RegionPager : public RegionPagerBase {
|
||||
public:
|
||||
Region* LoadRegion(int x, int y) {
|
||||
//TODO
|
||||
//if there's no region to load, return null
|
||||
}
|
||||
|
||||
Region* SaveRegion(int x, int y) {
|
||||
//TODO
|
||||
//save the region using the functor
|
||||
}
|
||||
|
||||
Region* CreateRegion(int x, int y) {
|
||||
//TODO
|
||||
//create the region
|
||||
//DON'T call this on a non-zero region,
|
||||
//or if there's a region saved to the disk
|
||||
}
|
||||
|
||||
void UnloadRegion(int x, int y) {
|
||||
//TODO
|
||||
//free the region, possibly saving it
|
||||
}
|
||||
|
||||
//accessors
|
||||
MapGenerator* GetGenerator() { return &generator; }
|
||||
MapFileFormat* GetFormat() { return &format; }
|
||||
protected:
|
||||
MapGenerator generator;
|
||||
MapFileFormat format;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user