Grail (C++)  1.3.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
Reasoner.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_REASONER_H
4 #define GRAIL_REASONER_H
5 
6 #include "Behavior.hh"
7 #include "DebugUtilities/ISnapshotGenerator.h"
8 
9 #include <fstream>
10 #include <iostream>
11 #include <memory>
12 #include <vector>
13 
14 namespace grail
15 {
16  class AIEntity;
17 
21  class Reasoner
22  {
23  public:
24  Reasoner() = default;
25  Reasoner(const Reasoner&) = default;
26  Reasoner(Reasoner&&) = default;
27 
28  virtual ~Reasoner() = default;
29 
30  Reasoner& operator =(const Reasoner&) = default;
31  Reasoner& operator =(Reasoner&&) = default;
32 
37  virtual void StageBehavior(AIEntity& entity) = 0;
38  virtual std::unique_ptr<ISnapshotGenerator> CreateSnapshotGenerator(size_t /*entityId*/);
39  };
40 }
41 #endif //GRAIL_REASONER_H
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
grail::Reasoner
The Reasoner class - Entity's "brain", assigns them behaviors chosen by user-defined algorithms.
Definition: Reasoner.hh:21
grail::Reasoner::StageBehavior
virtual void StageBehavior(AIEntity &entity)=0
selectBehavior - Runs reasoner's selection algorithm and assigns chosen behavior to provided entity.