Grail (C++)  1.2.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
Behavior.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_AI_BEHAVIOR_H
4 #define GRAIL_AI_BEHAVIOR_H
5 
6 #include <string>
7 
8 namespace grail
9 {
10  class AIEntity;
11 
12  enum class BehaviorStatus
13  {
14  SUSPENDED = 0,
15  ACTIVE,
16  FINISHED,
17  DELEGALIZED,
18  };
19 
21  class Behavior
22  {
23  friend class AIEntity;
24  friend class BehaviorSequence;
25 
26  public:
27  Behavior();
28  Behavior(const Behavior&) = default;
29  Behavior(Behavior&&) = default;
30 
31  virtual ~Behavior();
32 
33  Behavior& operator =(const Behavior&) = delete;
34  Behavior& operator =(Behavior&&) = delete;
35 
38  virtual void Start(AIEntity& owner);
39 
42  virtual void Update(AIEntity& owner, float deltaTime);
43 
46  virtual void Finish(AIEntity& owner, const BehaviorStatus status);
47 
49  virtual bool IsFinished(const AIEntity& owner) const;
50 
53  virtual bool IsLegal(const AIEntity& owner) const;
54 
56  virtual bool IsInterruptible() const;
57 
62  BehaviorStatus GetStatus() const;
63 
64  virtual std::string GetName() const;
65 
66  private:
67  void UpdateStatus(const AIEntity& owner);
68  void SetStatus(BehaviorStatus newStatus);
69 
70  BehaviorStatus status = BehaviorStatus::SUSPENDED;
71  };
72 }
73 #endif //GRAIL_AI_BEHAVIOR_H
grail::Behavior::IsLegal
virtual bool IsLegal(const AIEntity &owner) const
Definition: Behavior.cpp:35
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
grail::Behavior::Start
virtual void Start(AIEntity &owner)
Definition: Behavior.cpp:18
grail::Behavior::Update
virtual void Update(AIEntity &owner, float deltaTime)
Definition: Behavior.cpp:22
grail::Behavior::IsFinished
virtual bool IsFinished(const AIEntity &owner) const
Definition: Behavior.cpp:30
grail::BehaviorSequence
The BehaviorSequence class - specialized Behavior executing sequence of provided subbehaviors one by ...
Definition: BehaviorSequence.hh:16
grail::Behavior
A high-level abstraction of actions in the game.
Definition: Behavior.hh:21
grail::Behavior::GetStatus
BehaviorStatus GetStatus() const
GetStatus.
Definition: Behavior.cpp:60
grail::Behavior::Finish
virtual void Finish(AIEntity &owner, const BehaviorStatus status)
Definition: Behavior.cpp:26
grail::Behavior::IsInterruptible
virtual bool IsInterruptible() const
Definition: Behavior.cpp:40