1 /*
2    Copyright (C) 2009 - 2018 by Yurii Chernyi <terraninfo@terraninfo.net>
3    Part of the Battle for Wesnoth Project https://www.wesnoth.org/
4 
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY.
11 
12    See the COPYING file for more details.
13 */
14 
15 /**
16  * FAI AI Support engine - creating specific ai components from config
17  * @file
18  */
19 
20 #pragma once
21 
22 #include "ai/composite/engine.hpp"
23 #include "ai/default/contexts.hpp"
24 
25 //============================================================================
26 namespace ai {
27 
28 class formula_ai;
29 
30 class engine_fai : public engine {
31 public:
32 	engine_fai( readonly_context &context, const config &cfg );
33 
34 	virtual ~engine_fai();
35 
36 	virtual void do_parse_candidate_action_from_config( rca_context &context, const config &cfg, std::back_insert_iterator<std::vector< candidate_action_ptr >> b );
37 
38 	virtual void do_parse_stage_from_config( ai_context &context, const config &cfg, std::back_insert_iterator<std::vector< stage_ptr >> b );
39 
40 	virtual std::string evaluate(const std::string &str);
41 
42 	virtual config to_config() const;
43 
44 	virtual void set_ai_context(ai_context *context);
45 private:
46 	std::shared_ptr<formula_ai> formula_ai_;
47 };
48 
49 } //end of namespace ai
50