Browse Source

Tweaks to fow reveal on new turn

Ivan Savenko 1 year ago
parent
commit
e90d057296
1 changed files with 3 additions and 15 deletions
  1. 3 15
      server/CGameHandler.cpp

+ 3 - 15
server/CGameHandler.cpp

@@ -641,20 +641,7 @@ void CGameHandler::onNewTurn()
 			// Skyship, probably easier to handle same as Veil of darkness
 			// do it every new day before veils
 			if (player.isValidPlayer())
-			{
-				std::unordered_set<int3> revealedTiles;
-
-				// find all hidden tiles
-				const auto & fow = getPlayerTeam(player)->fogOfWarMap;
-				auto shape = fow.shape();
-				for(size_t z = 0; z < shape[0]; z++)
-					for(size_t x = 0; x < shape[1]; x++)
-						for(size_t y = 0; y < shape[2]; y++)
-							if (!fow[z][x][y])
-								revealedTiles.insert(int3(x, y, z));
-
-				changeFogOfWar(revealedTiles, player, ETileVisibility::REVEALED);
-			}
+				changeFogOfWar(t->getSightCenter(), t->getSightRadius(), player, ETileVisibility::REVEALED);
 		}
 	}
 
@@ -3884,7 +3871,8 @@ void CGameHandler::changeFogOfWar(const std::unordered_set<int3> &tiles, PlayerC
 
 	if (mode == ETileVisibility::HIDDEN)
 	{
-		//do not hide tiles observed by owned objects. May lead to disastrous AI problems
+		// do not hide tiles observed by owned objects. May lead to disastrous AI problems
+		// FIXME: this leads to a bug - shroud of darkness from Necropolis does can not override Skyship from Tower
 		std::unordered_set<int3> observedTiles;
 		auto p = getPlayerState(player);
 		for (auto obj : p->getOwnedObjects())