The Battle for Wesnoth  1.15.12+dev
candidates.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2009 - 2018 by Bartosz Waresiak <dragonking@o2.pl>
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  * @file
17  * Defines formula ai candidate actions - headers
18  * */
19 
20 #pragma once
21 
22 #include <set>
23 
24 class unit_map;
25 class config;
26 
27 namespace ai {
28 class formula_ai;
29 }
30 
31 namespace wfl {
32 
34 
35 typedef std::map< std::string, const_formula_ptr > candidate_action_filters;
36 typedef std::shared_ptr<base_candidate_action> candidate_action_ptr;
37 
38 //every new candidate action type should be derived from this class
39 //and should complete evaluate and update_callable_map methods
41 public:
42  base_candidate_action(const std::string& name, const std::string& type,const config& cfg, function_symbol_table* function_table);
43 
45 
46  //evaluate candidate action using eval_ formula
47  virtual void evaluate(ai::formula_ai* /*ai*/, unit_map& /*units*/) {}
48 
49  //adds needed callable objects to callable map
50  virtual void update_callable_map(map_formula_callable& /*callable*/) {}
51 
52  //return score of last evaluation
53  int get_score() const {return score_;}
54 
55  const_formula_ptr& get_action() {return action_;}
56 
57  const std::string& get_name() const { return name_;}
58  const std::string& get_type() const { return type_;}
59 
60 protected:
61  int execute_formula(const const_formula_ptr& formula,
62  const formula_callable& callable, const ai::formula_ai* ai);
63 
64  std::string name_;
65  std::string type_;
68  int score_;
69 };
70 
72 public:
73  candidate_action_with_filters(const std::string& name, const std::string& type,const config& cfg, function_symbol_table* function_table);
74 protected:
75  variant do_filtering(ai::formula_ai* ai, variant& input, const_formula_ptr formula);
76 
77  candidate_action_filters filter_map_;
78 };
79 
81 public:
82  move_candidate_action(const std::string& name, const std::string& type,const config& cfg, function_symbol_table* function_table);
83 
84  virtual void evaluate(ai::formula_ai* ai, unit_map& units);
85 
86  virtual void update_callable_map(map_formula_callable& callable);
87 
88 protected:
90 };
91 
93 public:
94  attack_candidate_action(const std::string& name, const std::string& type,const config& cfg, function_symbol_table* function_table);
95 
96  virtual void evaluate(ai::formula_ai* ai, unit_map& units);
97 
98  virtual void update_callable_map(map_formula_callable& callable);
99 protected:
102 };
103 
104 }
std::shared_ptr< candidate_action > candidate_action_ptr
Definition: rca.hpp:144
const std::string & get_name() const
Definition: candidates.hpp:57
const_formula_ptr action_
Definition: candidates.hpp:67
std::map< std::string, const_formula_ptr > candidate_action_filters
Definition: candidates.hpp:33
virtual void evaluate(ai::formula_ai *, unit_map &)
Definition: candidates.hpp:47
A small explanation about what&#39;s going on here: Each action has access to two game_info objects First...
Definition: actions.cpp:59
const std::string & get_type() const
Definition: candidates.hpp:58
std::shared_ptr< const formula > const_formula_ptr
Definition: formula_fwd.hpp:23
Definition: contexts.hpp:43
Container associating units to locations.
Definition: map.hpp:97
candidate_action_filters filter_map_
Definition: candidates.hpp:77
const_formula_ptr eval_
Definition: candidates.hpp:66
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:59
const_formula_ptr & get_action()
Definition: candidates.hpp:55
virtual void update_callable_map(map_formula_callable &)
Definition: candidates.hpp:50