Преглед на файлове

Nullkiller: stabilisation after refactoring

Andrii Danylchenko преди 4 години
родител
ревизия
75b8ee74fa
променени са 4 файла, в които са добавени 6 реда и са изтрити 6 реда
  1. 2 3
      AI/Nullkiller/Engine/Nullkiller.cpp
  2. 0 2
      AI/Nullkiller/Pathfinding/AIPathfinder.cpp
  3. 1 1
      AI/Nullkiller/Pathfinding/AIPathfinder.h
  4. 3 0
      AI/Nullkiller/VCAI.cpp

+ 2 - 3
AI/Nullkiller/Engine/Nullkiller.cpp

@@ -153,12 +153,11 @@ void Nullkiller::updateAiState()
 	memory->removeInvisibleObjects(cb.get());
 	dangerHitMap->updateHitMap();
 
-	// TODO: move to hero manager
 	auto activeHeroes = cb->getHeroesInfo();
 
-	vstd::erase_if(activeHeroes, [this](const HeroPtr & hero) -> bool
+	vstd::erase_if(activeHeroes, [this](const CGHeroInstance * hero) -> bool
 	{
-		auto lockedReason = getHeroLockedReason(hero.h);
+		auto lockedReason = getHeroLockedReason(hero);
 
 		return lockedReason == HeroLockedReason::DEFENCE;
 	});

+ 0 - 2
AI/Nullkiller/Pathfinding/AIPathfinder.cpp

@@ -14,8 +14,6 @@
 #include "../../../lib/mapping/CMap.h"
 #include "../Engine/Nullkiller.h"
 
-std::shared_ptr<AINodeStorage> AIPathfinder::storage;
-
 AIPathfinder::AIPathfinder(CPlayerSpecificInfoCallback * cb, Nullkiller * ai)
 	:cb(cb), ai(ai)
 {

+ 1 - 1
AI/Nullkiller/Pathfinding/AIPathfinder.h

@@ -18,7 +18,7 @@ class Nullkiller;
 class AIPathfinder
 {
 private:
-	static std::shared_ptr<AINodeStorage> storage;
+	std::shared_ptr<AINodeStorage> storage;
 	CPlayerSpecificInfoCallback * cb;
 	Nullkiller * ai;
 

+ 3 - 0
AI/Nullkiller/VCAI.cpp

@@ -770,6 +770,9 @@ void VCAI::performObjectInteraction(const CGObjectInstance * obj, HeroPtr h)
 		{
 			makePossibleUpgrades(h.get());
 
+			if(!nullkiller || !h->visitedTown->garrisonHero || !nullkiller->isHeroLocked(h->visitedTown->garrisonHero))
+				moveCreaturesToHero(h->visitedTown);
+
 			if(ai->nullkiller->heroManager->getHeroRole(h) == HeroRole::MAIN && !h->hasSpellbook()
 				&& cb->getResourceAmount(Res::GOLD) >= GameConstants::SPELLBOOK_GOLD_COST)
 			{