| 
														
															@@ -67,7 +67,7 @@ void CPrivilegedInfoCallback::getTilesInRange(std::unordered_set<int3, ShashInt3 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return;
 
														 | 
														
														 | 
														
															 		return;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}
 
														 | 
														
														 | 
														
															 	}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(radious == CBuilding::HEIGHT_SKYSHIP) //reveal entire map
 
														 | 
														
														 | 
														
															 	if(radious == CBuilding::HEIGHT_SKYSHIP) //reveal entire map
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		getAllTiles (tiles, player, -1, 0);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		getAllTiles (tiles, player, -1, MapTerrainFilterMode::NONE);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	else
 
														 | 
														
														 | 
														
															 	else
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	{
 
														 | 
														
														 | 
														
															 	{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		const TeamState * team = !player ? nullptr : gs->getPlayerTeam(*player);
 
														 | 
														
														 | 
														
															 		const TeamState * team = !player ? nullptr : gs->getPlayerTeam(*player);
 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -91,15 +91,15 @@ void CPrivilegedInfoCallback::getTilesInRange(std::unordered_set<int3, ShashInt3 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}
 
														 | 
														
														 | 
														
															 	}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }
 
														 | 
														
														 | 
														
															 }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-void CPrivilegedInfoCallback::getAllTiles(std::unordered_set<int3, ShashInt3> & tiles, boost::optional<PlayerColor> Player, int level, int surface) const
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void CPrivilegedInfoCallback::getAllTiles(std::unordered_set<int3, ShashInt3> & tiles, boost::optional<PlayerColor> Player, int level, MapTerrainFilterMode tileFilterMode) const
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 {
 
														 | 
														
														 | 
														
															 {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(!!Player && *Player >= PlayerColor::PLAYER_LIMIT)
 
														 | 
														
														 | 
														
															 	if(!!Player && *Player >= PlayerColor::PLAYER_LIMIT)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	{
 
														 | 
														
														 | 
														
															 	{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		logGlobal->error("Illegal call to getAllTiles !");
 
														 | 
														
														 | 
														
															 		logGlobal->error("Illegal call to getAllTiles !");
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return;
 
														 | 
														
														 | 
														
															 		return;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}
 
														 | 
														
														 | 
														
															 	}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	bool water = surface == 0 || surface == 2,
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		land = surface == 0 || surface == 1;
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+//	bool water = surface == 0 || surface == 2,
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+//		land = surface == 0 || surface == 1;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	std::vector<int> floors;
 
														 | 
														
														 | 
														
															 	std::vector<int> floors;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(level == -1)
 
														 | 
														
														 | 
														
															 	if(level == -1)
 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -114,13 +114,32 @@ void CPrivilegedInfoCallback::getAllTiles(std::unordered_set<int3, ShashInt3> & 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	for (auto zd : floors)
 
														 | 
														
														 | 
														
															 	for (auto zd : floors)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	{
 
														 | 
														
														 | 
														
															 	{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		for (int xd = 0; xd < gs->map->width; xd++)
 
														 | 
														
														 | 
														
															 		for (int xd = 0; xd < gs->map->width; xd++)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		{
 
														 | 
														
														 | 
														
															 		{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			for (int yd = 0; yd < gs->map->height; yd++)
 
														 | 
														
														 | 
														
															 			for (int yd = 0; yd < gs->map->height; yd++)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			{
 
														 | 
														
														 | 
														
															 			{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				if ((getTile (int3 (xd,yd,zd))->terType->isWater() && water)
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					|| (getTile (int3 (xd,yd,zd))->terType->isLand() && land))
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                bool isTileEligible = false;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                switch(tileFilterMode)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    case MapTerrainFilterMode::NONE:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        isTileEligible = true;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    case MapTerrainFilterMode::WATER:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        isTileEligible = getTile (int3 (xd,yd,zd))->terType->isWater();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    case MapTerrainFilterMode::LAND:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        isTileEligible = getTile (int3 (xd,yd,zd))->terType->isLand();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    case MapTerrainFilterMode::LAND_CARTOGRAPHER:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        isTileEligible = getTile(int3 (xd,yd,zd))->terType->isSurfaceCartographerCompatible();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    case MapTerrainFilterMode::UNDERGROUND_CARTOGRAPHER:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        isTileEligible = getTile(int3 (xd,yd,zd))->terType->isUndergroundCartographerCompatible();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				if (isTileEligible)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					tiles.insert(int3(xd,yd,zd));
 
														 | 
														
														 | 
														
															 					tiles.insert(int3(xd,yd,zd));
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			}
 
														 | 
														
														 | 
														
															 			}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}
 
														 | 
														
														 | 
														
															 		}
 
														 |