mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Merge branch 'develop' of https://github.com/vcmi/vcmi into RMG
This commit is contained in:
commit
8ea175ce95
@ -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())
|
||||
{
|
||||
|
11
Global.h
11
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 */
|
||||
/* ---------------------------------------------------------------------------- */
|
||||
|
@ -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++)
|
||||
{
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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())
|
||||
|
Loading…
Reference in New Issue
Block a user