summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-10-21 20:31:25 +0300
committerAndrei Karas <akaras@inbox.ru>2015-10-21 20:31:25 +0300
commit27a943e95196a58103814edf3e4e3cd3a60ed8cd (patch)
treec68eedc10e7a1eba18d2c4209c8f7bc28e6673fd
parent1888670781a0a8f4d14f58e5eab9173feeddfe46 (diff)
downloadmanaplus-27a943e95196a58103814edf3e4e3cd3a60ed8cd.tar.gz
manaplus-27a943e95196a58103814edf3e4e3cd3a60ed8cd.tar.bz2
manaplus-27a943e95196a58103814edf3e4e3cd3a60ed8cd.tar.xz
manaplus-27a943e95196a58103814edf3e4e3cd3a60ed8cd.zip
Add map layer attribute TileCondition.
-rw-r--r--src/resources/map/maplayer.cpp4
-rw-r--r--src/resources/map/maplayer.h5
-rw-r--r--src/resources/mapreader.cpp15
3 files changed, 19 insertions, 5 deletions
diff --git a/src/resources/map/maplayer.cpp b/src/resources/map/maplayer.cpp
index 51691925b..57583aef9 100644
--- a/src/resources/map/maplayer.cpp
+++ b/src/resources/map/maplayer.cpp
@@ -47,7 +47,8 @@
MapLayer::MapLayer(const int x, const int y,
const int width, const int height,
const bool fringeLayer,
- const int mask) :
+ const int mask,
+ const int tileCondition) :
mX(x),
mY(y),
mWidth(width),
@@ -58,6 +59,7 @@ MapLayer::MapLayer(const int x, const int y,
mTempLayer(nullptr),
mTempRows(),
mMask(mask),
+ mTileCondition(tileCondition),
mActorsFix(0),
mIsFringeLayer(fringeLayer),
mHighlightAttackRange(config.getBoolValue("highlightAttackRange")),
diff --git a/src/resources/map/maplayer.h b/src/resources/map/maplayer.h
index 8c36fa771..2c1832691 100644
--- a/src/resources/map/maplayer.h
+++ b/src/resources/map/maplayer.h
@@ -60,7 +60,9 @@ class MapLayer final: public ConfigListener
*/
MapLayer(const int x, const int y,
const int width, const int height,
- const bool isFringeLayer, const int mask);
+ const bool isFringeLayer,
+ const int mask,
+ const int tileCondition);
A_DELETE_COPY(MapLayer)
@@ -166,6 +168,7 @@ class MapLayer final: public ConfigListener
typedef std::vector<MapRowVertexes*> MapRows;
MapRows mTempRows;
int mMask;
+ int mTileCondition;
int mActorsFix;
const bool mIsFringeLayer; /**< Whether the actors are drawn. */
bool mHighlightAttackRange;
diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp
index 9b87d821c..4fbef0d1b 100644
--- a/src/resources/mapreader.cpp
+++ b/src/resources/mapreader.cpp
@@ -764,6 +764,7 @@ void MapReader::readLayer(const XmlNodePtr node, Map *const map)
const bool isCollisionLayer = (name.substr(0, 9) == "collision");
const bool isHeightLayer = (name.substr(0, 7) == "heights");
int mask = 1;
+ int tileCondition = -1;
MapLayer::Type layerType = MapLayer::TILES;
if (isCollisionLayer)
@@ -811,6 +812,10 @@ void MapReader::readLayer(const XmlNodePtr node, Map *const map)
{
mask = atoi(value.c_str());
}
+ else if (pname == "TileCondition")
+ {
+ tileCondition = atoi(value.c_str());
+ }
}
}
@@ -819,7 +824,11 @@ void MapReader::readLayer(const XmlNodePtr node, Map *const map)
if (layerType == MapLayer::TILES)
{
- layer = new MapLayer(offsetX, offsetY, w, h, isFringeLayer, mask);
+ layer = new MapLayer(offsetX, offsetY,
+ w, h,
+ isFringeLayer,
+ mask,
+ tileCondition);
map->addLayer(layer);
}
else if (layerType == MapLayer::HEIGHTS)
@@ -1079,9 +1088,9 @@ Map *MapReader::createEmptyMap(const std::string &restrict filename,
map->setProperty("_realfilename", filename);
updateMusic(map);
map->setCustom(true);
- MapLayer *layer = new MapLayer(0, 0, 300, 300, false, 1);
+ MapLayer *layer = new MapLayer(0, 0, 300, 300, false, 1, -1);
map->addLayer(layer);
- layer = new MapLayer(0, 0, 300, 300, true, 1);
+ layer = new MapLayer(0, 0, 300, 300, true, 1, -1);
map->addLayer(layer);
map->updateDrawLayersList();