Browse Source

Merge branch 'develop' of https://github.com/vcmi/vcmi into RMG

DjWarmonger 11 years ago
parent
commit
8ea175ce95
6 changed files with 12 additions and 32 deletions
  1. 1 2
      AI/VCAI/VCAI.cpp
  2. 3 8
      Global.h
  3. 0 1
      client/NetPacksClient.cpp
  4. 3 17
      lib/CGameState.cpp
  5. 3 2
      lib/rmg/CMapGenerator.cpp
  6. 2 2
      lib/rmg/CRmgTemplateZone.cpp

+ 1 - 2
AI/VCAI/VCAI.cpp

@@ -1213,7 +1213,6 @@ std::vector<const CGObjectInstance *> VCAI::getPossibleDestinations(HeroPtr h)
 	std::vector<const CGObjectInstance *> possibleDestinations;
 	for(const CGObjectInstance *obj : visitableObjs)
 	{
-		const int3 pos = obj->visitablePos();
 		if (isGoodForVisit(obj, h))
 		{
 			possibleDestinations.push_back(obj);
@@ -1305,7 +1304,7 @@ void VCAI::wander(HeroPtr h)
 			if(townsReachable.size())
 			{
 				boost::sort(townsReachable, compareReinforcements);
-				dests.emplace_back(townsReachable.back());
+				dests.push_back(townsReachable.back());
 			}
 			else if(townsNotReachable.size())
 			{

+ 3 - 8
Global.h

@@ -24,12 +24,12 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size.");
 #  define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__)
 #endif
 
-#if !defined(__clang__) && defined(__GNUC__) && (GCC_VERSION < 460)
-#  error VCMI requires at least gcc-4.6 for successful compilation or clang-3.1. Please update your compiler
+#if !defined(__clang__) && defined(__GNUC__) && (GCC_VERSION < 470)
+#  error VCMI requires at least gcc-4.7.2 for successful compilation or clang-3.1. Please update your compiler
 #endif
 
 #if defined(__GNUC__) && (GCC_VERSION == 470 || GCC_VERSION == 471)
-#  error This GCC version has buggy std::array::at version and should not be used. Please update to 4.7.2 or use 4.6.x.
+#  error This GCC version has buggy std::array::at version and should not be used. Please update to 4.7.2 or later
 #endif
 
 /* ---------------------------------------------------------------------------- */
@@ -42,11 +42,6 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size.");
 #  define CPP11_USE_INITIALIZERS_LIST
 #endif
 
-//override keyword - not present in gcc-4.6
-#if !defined(_MSC_VER) && !defined(__clang__) && !(defined(__GNUC__) && (GCC_VERSION >= 470))
-#  define override
-#endif
-
 /* ---------------------------------------------------------------------------- */
 /* Suppress some compiler warnings */
 /* ---------------------------------------------------------------------------- */

+ 0 - 1
client/NetPacksClient.cpp

@@ -332,7 +332,6 @@ void RemoveObject::applyFirstCl( CClient *cl )
 
 	CGI->mh->hideObject(o);
 
-	int3 pos = o->visitablePos();
 	//notify interfaces about removal
 	for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++)
 	{

+ 3 - 17
lib/CGameState.cpp

@@ -1268,21 +1268,6 @@ CGameState::CrossoverHeroesList CGameState::getCrossoverHeroesFromPreviousScenar
 		}
 	}
 
-	// Now we need to perform deep copies of all heroes
-	// The lambda below replaces pointer to a hero with a pointer to its deep copy.
-	auto replaceWithDeepCopy = [](CGHeroInstance *&hero)
-	{
-		// We cache map original hero => copy.
-		// We may be called multiple times with the same hero and should return a single copy.
-		static std::map<CGHeroInstance*, CGHeroInstance*> oldToCopy;
-		if(!oldToCopy[hero])
-			oldToCopy[hero] = CMemorySerializer::deepCopy(*hero).release();
-
-		hero = oldToCopy[hero];
-	};
-	range::for_each(crossoverHeroes.heroesFromAnyPreviousScenarios, replaceWithDeepCopy);
-	range::for_each(crossoverHeroes.heroesFromPreviousScenario,     replaceWithDeepCopy);
-
 	return crossoverHeroes;
 }
 
@@ -2808,7 +2793,7 @@ std::vector<CGameState::CampaignHeroReplacement> CGameState::generateCampaignHer
 				{
 					auto hero = *it;
 					crossoverHeroes.removeHeroFromBothLists(hero);
-					campaignHeroReplacements.push_back(CampaignHeroReplacement(hero, heroPlaceholder->id));
+                    campaignHeroReplacements.push_back(CampaignHeroReplacement(CMemorySerializer::deepCopy(*hero).release(), heroPlaceholder->id));
 				}
 			}
 		}
@@ -2843,7 +2828,8 @@ std::vector<CGameState::CampaignHeroReplacement> CGameState::generateCampaignHer
 		auto heroPlaceholder = heroPlaceholders[i];
 		if(crossoverHeroes.heroesFromPreviousScenario.size() > i)
 		{
-			campaignHeroReplacements.push_back(CampaignHeroReplacement(crossoverHeroes.heroesFromPreviousScenario[i], heroPlaceholder->id));
+            auto hero = crossoverHeroes.heroesFromPreviousScenario[i];
+            campaignHeroReplacements.push_back(CampaignHeroReplacement(CMemorySerializer::deepCopy(*hero).release(), heroPlaceholder->id));
 		}
 	}
 

+ 3 - 2
lib/rmg/CMapGenerator.cpp

@@ -133,7 +133,8 @@ void CMapGenerator::addPlayerInfo()
 		{
 			player.canHumanPlay = true;
 		}
-		auto itTeam = std::next(teamNumbers[j].begin(), rand.nextInt (teamNumbers[j].size()));
+
+        auto itTeam = RandomGeneratorUtil::nextItem(teamNumbers[j], rand);
 		player.team = TeamID(*itTeam);
 		teamNumbers[j].erase(itTeam);
 		map->players[pSettings.getColor().getNum()] = player;
@@ -215,4 +216,4 @@ void CMapGenerator::addHeaderInfo()
 std::map<TRmgTemplateZoneId, CRmgTemplateZone*> CMapGenerator::getZones() const
 {
 	return zones;
-}
+}

+ 2 - 2
lib/rmg/CRmgTemplateZone.cpp

@@ -515,8 +515,8 @@ void CRmgTemplateZone::placeObject(CMapGenerator* gen, CGObjectInstance* object,
 
 	auto points = object->getBlockedPos();
 	if (object->isVisitable())
-		points.emplace(pos + object->getVisitableOffset());
-	points.emplace(pos);
+		points.insert(pos + object->getVisitableOffset());
+	points.insert(pos);
 	for(auto const &p : points)
 	{		
 		if (tileinfo.find(pos + p) != tileinfo.end())