| 
									
										
										
										
											2021-05-16 14:38:53 +03:00
										 |  |  | /*
 | 
					
						
							|  |  |  | * BuildThis.h, part of VCMI engine | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * Authors: listed in file AUTHORS in main folder | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * License: GNU General Public License v2.0 or later | 
					
						
							|  |  |  | * Full text of license available in license.txt file, in main folder | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "CGoal.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 21:01:07 +03:00
										 |  |  | namespace NKAI | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2021-05-16 14:38:53 +03:00
										 |  |  | namespace Goals | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	class DLL_EXPORT Composition : public ElementarGoal<Composition> | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	private: | 
					
						
							|  |  |  | 		TGoalVec subtasks; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public: | 
					
						
							|  |  |  | 		Composition() | 
					
						
							|  |  |  | 			: ElementarGoal(Goals::COMPOSITION), subtasks() | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Composition(TGoalVec subtasks) | 
					
						
							|  |  |  | 			: ElementarGoal(Goals::COMPOSITION), subtasks(subtasks) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		virtual bool operator==(const Composition & other) const override; | 
					
						
							|  |  |  | 		virtual std::string toString() const override; | 
					
						
							| 
									
										
										
										
											2021-05-16 15:39:38 +03:00
										 |  |  | 		void accept(AIGateway * ai) override; | 
					
						
							| 
									
										
										
										
											2021-05-16 14:45:35 +03:00
										 |  |  | 		Composition & addNext(const AbstractGoal & goal); | 
					
						
							| 
									
										
										
										
											2021-05-16 14:38:53 +03:00
										 |  |  | 		Composition & addNext(TSubgoal goal); | 
					
						
							|  |  |  | 		virtual TGoalVec decompose() const override; | 
					
						
							|  |  |  | 		virtual bool isElementar() const override; | 
					
						
							| 
									
										
										
										
											2022-09-06 21:14:22 +03:00
										 |  |  | 		virtual int getHeroExchangeCount() const override; | 
					
						
							| 
									
										
										
										
											2021-05-16 14:38:53 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-09-26 21:01:07 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | } |