2
0
Эх сурвалжийг харах

[programming challenge] Implemented battleGetObstaclesAtTile.

Michał W. Urbańczyk 14 жил өмнө
parent
commit
8e10d315ed

+ 10 - 3
lib/IGameCallback.cpp

@@ -157,10 +157,17 @@ int CBattleInfoCallback::battleGetBattlefieldType()
 	return gs->curB->battlefieldType;
 }
 
-int CBattleInfoCallback::battleGetObstaclesAtTile(THex tile) //returns bitfield 
+int CBattleInfoCallback::battleGetObstaclesAtTile(THex tile)
 {
-	//TODO - write
-	return -1;
+	std::vector<CObstacleInstance> obstacles = battleGetAllObstacles();
+	std::set<THex> coveredHexes;
+	for(int b = 0; b < obstacles.size(); ++b)
+	{
+		std::vector<THex> blocked = VLC->heroh->obstacles.find(obstacles[b].ID)->second.getBlocked(obstacles[b].pos);
+		for(int w = 0; w < blocked.size(); ++w)
+			coveredHexes.insert(blocked[w]);
+	}
+	return vstd::contains(coveredHexes, tile);
 }
 
 std::vector<CObstacleInstance> CBattleInfoCallback::battleGetAllObstacles()

+ 1 - 1
lib/IGameCallback.h

@@ -93,7 +93,7 @@ public:
 
 	int battleGetBattlefieldType(); 
 
-///	 returns bitfield
+///	 returns 1 if there is an obstacle or 0 otherwise
 	int battleGetObstaclesAtTile(THex tile); 
 
 ///	 returns all obstacles on the battlefield