| 
									
										
										
										
											2021-05-15 19:23:05 +03:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | #include "PriorityEvaluator.h"
 | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:36 +03:00
										 |  |  | #include "DangerHitMapAnalyzer.h"
 | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | #include "../Goals/AbstractGoal.h"
 | 
					
						
							|  |  |  | #include "../Behaviors/Behavior.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:05 +03:00
										 |  |  | class Nullkiller | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | private: | 
					
						
							|  |  |  | 	std::unique_ptr<PriorityEvaluator> priorityEvaluator; | 
					
						
							| 
									
										
										
										
											2021-05-15 21:27:22 +03:00
										 |  |  | 	HeroPtr activeHero; | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:27 +03:00
										 |  |  | 	std::set<HeroPtr> lockedHeroes; | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:05 +03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:36 +03:00
										 |  |  | 	std::unique_ptr<DangerHitMapAnalyzer> dangerHitMap; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | 	Nullkiller(); | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:05 +03:00
										 |  |  | 	void makeTurn(); | 
					
						
							| 
									
										
										
										
											2021-05-15 21:27:22 +03:00
										 |  |  | 	bool isActive(const CGHeroInstance * hero) const { return activeHero.h == hero; } | 
					
						
							| 
									
										
										
										
											2021-05-15 21:56:31 +03:00
										 |  |  | 	void setActive(const HeroPtr & hero) { activeHero = hero; } | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:27 +03:00
										 |  |  | 	void lockHero(const HeroPtr & hero) { lockedHeroes.insert(hero); } | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:38 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:27 +03:00
										 |  |  | 	void resetAiState(); | 
					
						
							|  |  |  | 	void updateAiState(); | 
					
						
							| 
									
										
										
										
											2021-05-15 21:57:44 +03:00
										 |  |  | 	Goals::TSubgoal choseBestTask(std::shared_ptr<Behavior> behavior) const; | 
					
						
							|  |  |  | 	Goals::TSubgoal choseBestTask(Goals::TGoalVec & tasks) const; | 
					
						
							| 
									
										
										
										
											2021-05-15 19:23:05 +03:00
										 |  |  | }; |