mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-06 09:09:40 +02:00
First version that compiles
This commit is contained in:
@@ -155,20 +155,20 @@ void ObjectTemplate::readTxt(CLegacyConfigParser & parser)
|
||||
// so these two fields can be interpreted as "strong affinity" and "weak affinity" towards terrains
|
||||
std::string & terrStr = strings[4]; // allowed terrains, 1 = object can be placed on this terrain
|
||||
|
||||
assert(terrStr.size() == 9); // all terrains but rock
|
||||
for(size_t i = 0; i < 9; i++)
|
||||
assert(terrStr.size() == Terrain::ROCK - 1); // all terrains but rock
|
||||
for(TTerrain i = Terrain::FIRST_REGULAR_TERRAIN; i < Terrain::ROCK; i++)
|
||||
{
|
||||
if (terrStr[8-i] == '1')
|
||||
allowedTerrains.insert(Terrain::createTerrainTypeH3M(i));
|
||||
allowedTerrains.insert(i);
|
||||
}
|
||||
|
||||
//assuming that object can be placed on other land terrains
|
||||
if(allowedTerrains.size() >= 8 && !allowedTerrains.count(Terrain("water")))
|
||||
if(allowedTerrains.size() >= 8 && !allowedTerrains.count(Terrain::WATER))
|
||||
{
|
||||
for(auto & terrain : VLC->terrainTypeHandler::terrains())
|
||||
for(const auto * terrain : VLC->terrainTypeHandler->terrains())
|
||||
{
|
||||
if(terrain.isLand() && terrain.isPassable())
|
||||
allowedTerrains.insert(terrain);
|
||||
if(terrain->isLand() && terrain->isPassable())
|
||||
allowedTerrains.insert(terrain->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,19 +229,19 @@ void ObjectTemplate::readMap(CBinaryReader & reader)
|
||||
|
||||
reader.readUInt16();
|
||||
ui16 terrMask = reader.readUInt16();
|
||||
for(size_t i = 0; i < 9; i++)
|
||||
for(size_t i = Terrain::FIRST_REGULAR_TERRAIN; i < Terrain::ROCK; i++)
|
||||
{
|
||||
if (((terrMask >> i) & 1 ) != 0)
|
||||
allowedTerrains.insert(Terrain::createTerrainTypeH3M(i));
|
||||
allowedTerrains.insert(i);
|
||||
}
|
||||
|
||||
//assuming that object can be placed on other land terrains
|
||||
if(allowedTerrains.size() >= 8 && !allowedTerrains.count(Terrain("water")))
|
||||
if(allowedTerrains.size() >= 8 && !allowedTerrains.count(Terrain::WATER))
|
||||
{
|
||||
for(auto & terrain : VLC->terrainTypeHandler::terrains())
|
||||
for(const auto * terrain : VLC->terrainTypeHandler->terrains())
|
||||
{
|
||||
if(terrain.isLand() && terrain.isPassable())
|
||||
allowedTerrains.insert(terrain);
|
||||
if(terrain->isLand() && terrain->isPassable())
|
||||
allowedTerrains.insert(terrain->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,15 +285,15 @@ void ObjectTemplate::readJson(const JsonNode &node, const bool withTerrain)
|
||||
if(withTerrain && !node["allowedTerrains"].isNull())
|
||||
{
|
||||
for (auto & entry : node["allowedTerrains"].Vector())
|
||||
allowedTerrains.insert(entry.String());
|
||||
allowedTerrains.insert(VLC->terrainTypeHandler->getInfoByName(entry.String())->id);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(auto & i : VLC->terrainTypeHandler::terrains())
|
||||
for(const auto * terrain : VLC->terrainTypeHandler->terrains())
|
||||
{
|
||||
if(!i.isPassable() || i.isWater())
|
||||
if(!terrain->isPassable() || terrain->isWater())
|
||||
continue;
|
||||
allowedTerrains.insert(i);
|
||||
allowedTerrains.insert(terrain->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ void ObjectTemplate::writeJson(JsonNode & node, const bool withTerrain) const
|
||||
if(withTerrain)
|
||||
{
|
||||
//assumed that ROCK and WATER terrains are not included
|
||||
if(allowedTerrains.size() < (VLC->terrainTypeHandler::terrains().size() - 2))
|
||||
if(allowedTerrains.size() < (VLC->terrainTypeHandler->terrains().size() - 2))
|
||||
{
|
||||
JsonVector & data = node["allowedTerrains"].Vector();
|
||||
|
||||
@@ -556,9 +556,9 @@ void ObjectTemplate::calculateVisitableOffset()
|
||||
visitableOffset = int3(0, 0, 0);
|
||||
}
|
||||
|
||||
bool ObjectTemplate::canBePlacedAt(Terrain terrain) const
|
||||
bool ObjectTemplate::canBePlacedAt(TTerrain terrain) const
|
||||
{
|
||||
return allowedTerrains.count(terrain) != 0;
|
||||
return vstd::contains(allowedTerrains, terrain);
|
||||
}
|
||||
|
||||
void ObjectTemplate::recalculate()
|
||||
|
||||
Reference in New Issue
Block a user