1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-29 23:07:48 +02:00

Introduced 3-value logic for free, blocked and possibly occupied tiles. Refactoring.

This commit is contained in:
DjWarmonger
2014-05-30 16:50:06 +02:00
parent 8ea175ce95
commit 8c24ea0bfb
7 changed files with 163 additions and 79 deletions

View File

@@ -14,6 +14,7 @@
#include "../GameConstants.h"
#include "../CRandomGenerator.h"
#include "CMapGenOptions.h"
#include "CRmgTemplateZone.h"
#include "../CObjectHandler.h"
#include "../int3.h"
@@ -24,14 +25,11 @@ class CMapGenOptions;
class CTerrainViewPatternConfig;
class CMapEditManager;
class JsonNode;
class CMapGenerator;
class CTileInfo;
typedef std::vector<JsonNode> JsonVector;
class CMapGenerator;
//static const int3 dirs[] = { int3(0,1,0),int3(0,-1,0),int3(-1,0,0),int3(+1,0,0),
// int3(1,1,0),int3(-1,1,0),int3(1,-1,0),int3(-1,-1,0) };
class rmgException : std::exception
{
std::string msg;
@@ -68,19 +66,23 @@ public:
std::map<TRmgTemplateZoneId, CRmgTemplateZone*> getZones() const;
void foreach_neighbour(const int3 &pos, std::function<void(const int3& pos)> foo);
bool isBlocked(int3 &tile) const;
bool shouldBeBlocked(int3 &tile) const;
bool isPossible(int3 &tile) const;
bool isFree(int3 &tile) const;
void setOccupied(int3 &tile, ETileType::ETileType state);
private:
std::map<TRmgTemplateZoneId, CRmgTemplateZone*> zones;
CTileInfo*** tiles;
/// Generation methods
std::string getMapDescription() const;
void addPlayerInfo();
void addHeaderInfo();
void initTiles();
void genZones();
void fillZones();
};
/* ---------------------------------------------------------------------------- */
/* Implementation/Detail classes, Private API */
/* ---------------------------------------------------------------------------- */
};