Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
Consideration.hh
1 #ifndef GRAIL_CONSIDERATION_H
2 #define GRAIL_CONSIDERATION_H
3 
4 #include "Evaluator.hh"
5 #include "../GrailCore/AIEntity.hh"
6 #include "../GrailCore/Blackboard.hh"
7 
8 namespace grail
9 {
10  namespace utility
11  {
12  template <typename ContextType>
17  class Consideration : public Evaluator<ContextType>
18  {
19  public:
20  Consideration() = default;
21 
22  Consideration(const Consideration<ContextType>&) = default;
24 
25  virtual ~Consideration() = default;
26 
27  Consideration& operator =(const Consideration<ContextType>&) = default;
28  Consideration& operator =(Consideration<ContextType>&&) = default;
29 
30  virtual EvaluatorType GetEvaluatorType() const override final { return EvaluatorType::CONSIDERATION; }
31 
32  virtual std::string GetDisplayName() const { return "unnamed_consideration"; }
33 
34  protected:
40  virtual float Evaluate(const ContextType& context) const = 0;
41 
42  virtual void DebugDump(const std::map<const void*, std::size_t>&,
43  EvaluationDebugData& debugData) const override final
44  {
45  debugData.SetMetadata(GetDisplayName());
46  }
47 
54  virtual float
55  Evaluate(const ContextType& context, UtilityEvaluatorSnapshot* const snapshot) const override final
56  {
57  return Evaluate(context);
58  }
59  };
60 
61  using DefaultConsideration = Consideration<const AIEntity*>;
62  using EntityBlackboardPair = std::pair<const AIEntity*, Blackboard>;
63  using UtilityConsideration = Consideration<EntityBlackboardPair>;
64  }
65 }
66 #endif //GRAIL_CONSIDERATION_H
grail::utility::Consideration::DebugDump
virtual void DebugDump(const std::map< const void *, std::size_t > &, EvaluationDebugData &debugData) const override final
DebugDump - Called from EvaluateContext, which generates additional debug data for each evaluator....
Definition: Consideration.hh:42
grail::utility::Consideration::Evaluate
virtual float Evaluate(const ContextType &context, UtilityEvaluatorSnapshot *const snapshot) const override final
Evaluate - Called from EvaluateContext which also evaluates context, but without automatically fillin...
Definition: Consideration.hh:55
grail::UtilityEvaluatorSnapshot
The UtilityEvaluatorSnapshot class - debug snapshot of whole evaluator tree assigned to evaluated obj...
Definition: UtilityEvaluatorSnapshot.h:21
grail::utility::Consideration::Evaluate
virtual float Evaluate(const ContextType &context) const =0
Evaluate - Abstract method, which should be overriden by the user to return proper value representing...
grail::utility::Consideration
The Consideration class - Abstract type of Evaluator representing a subset of game state.
Definition: Consideration.hh:17
grail::EvaluationDebugData
The EvaluationDebugData class - debug data describing singular evaluator.
Definition: EvaluationDebugData.h:19
grail::utility::Evaluator
The Evaluator class - base class being able to evaluate given context and output the result.
Definition: Evaluator.hh:20