#pragma once #include "PriorityEvaluator.h" #include "DangerHitMapAnalyzer.h" #include "../Goals/AbstractGoal.h" #include "../Behaviors/Behavior.h" class Nullkiller { private: std::unique_ptr priorityEvaluator; HeroPtr activeHero; std::set lockedHeroes; public: std::unique_ptr dangerHitMap; Nullkiller(); void makeTurn(); bool isActive(const CGHeroInstance * hero) const { return activeHero.h == hero; } void setActive(const HeroPtr & hero) { activeHero = hero; } void lockHero(const HeroPtr & hero) { lockedHeroes.insert(hero); } private: void resetAiState(); void updateAiState(); Goals::TSubgoal choseBestTask(Behavior & behavior); Goals::TSubgoal choseBestTask(Goals::TGoalVec tasks); };