Bläddra i källkod

- fixed bug in AI town development
- fixed too slow generation of FowChange package

Ivan Savenko 13 år sedan
förälder
incheckning
656999e99f
2 ändrade filer med 19 tillägg och 1 borttagningar
  1. 10 0
      AI/VCAI/VCAI.cpp
  2. 9 1
      server/CGameHandler.cpp

+ 10 - 0
AI/VCAI/VCAI.cpp

@@ -1164,6 +1164,16 @@ bool VCAI::tryBuildStructure(const CGTownInstance * t, int building, unsigned in
 		return true;
 
 	std::set<int> toBuild = cb->getBuildingRequiments(t, building);
+
+	//erase all already built buildings
+	for (auto buildIter = toBuild.begin(); buildIter != toBuild.end();)
+	{
+		if (vstd::contains(t->builtBuildings, *buildIter))
+			toBuild.erase(buildIter++);
+		else
+			buildIter++;
+	}
+
 	toBuild.insert(building);
 
 	BOOST_FOREACH(int buildID, toBuild)

+ 9 - 1
server/CGameHandler.cpp

@@ -1326,7 +1326,15 @@ void CGameHandler::newTurn()
 			FoWChange fw;
 			fw.mode = 1;
 			fw.player = player;
-			getAllTiles(fw.tiles, player, -1, 0);
+
+			// find all hidden tiles
+			auto & fow = gs->getPlayerTeam(player)->fogOfWarMap;
+			for (size_t i=0; i<fow.size(); i++)
+				for (size_t j=0; j<fow[i].size(); j++)
+					for (size_t k=0; k<fow[i][j].size(); k++)
+						if (!fow[i][j][k])
+							fw.tiles.insert(int3(i,j,k));
+
 			sendAndApply (&fw);
 		}
 		if (t->hasBonusOfType (Bonus::DARKNESS))