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