Grail (C++)  1.4.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
FSMBehavior.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_FSM_BEHAVIOR_H
4 #define GRAIL_FSM_BEHAVIOR_H
5 
6 #include "../../GrailCore/Reasoner.hh"
7 #include "../FiniteStateMachine.hh"
8 #include "../../GrailCore/EntityBlackboardPair.hh"
9 
10 namespace grail
11 {
12 namespace fsm
13 {
14  class FSMBehavior : public Behavior
15  {
16  public:
17  FSMBehavior(const std::vector<FiniteStateMachine::Transition>& transitions,
18  std::shared_ptr<State> initialState,
19  const std::string& stateMachineName);
20  FSMBehavior(FiniteStateMachine stateMachine);
21 
22  void Start(AIEntity& owner) override;
23  void Update(AIEntity& owner, float deltaTime) override;
24  void Finish(AIEntity& owner, const BehaviorStatus status) override;
25  bool IsFinished(const AIEntity& owner) const override;
26  bool IsLegal(const AIEntity& owner) const override;
27 
28  private:
29  FiniteStateMachine stateMachine;
30  Blackboard contextBlackboard{};
31 
32  };
33 }
34 }
35 
36 #endif //GRAIL_FSM_BEHAVIOR_H
grail::fsm::FSMBehavior::IsLegal
bool IsLegal(const AIEntity &owner) const override
Definition: FSMBehavior.cpp:41
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
grail::fsm::FiniteStateMachine
The FiniteStateMachine class - Class representing basic Finite State Machine.
Definition: FiniteStateMachine.hh:23
grail::fsm::FSMBehavior
Definition: FSMBehavior.hh:14
grail::Blackboard
The Blackboard class - grail's universal data container.
Definition: Blackboard.hh:15
grail::fsm::FSMBehavior::Finish
void Finish(AIEntity &owner, const BehaviorStatus status) override
Definition: FSMBehavior.cpp:31
grail::Behavior
A high-level abstraction of actions in the game.
Definition: Behavior.hh:22
grail::fsm::FSMBehavior::Update
void Update(AIEntity &owner, float deltaTime) override
Definition: FSMBehavior.cpp:26
grail::fsm::FSMBehavior::IsFinished
bool IsFinished(const AIEntity &owner) const override
Definition: FSMBehavior.cpp:36
grail::fsm::FSMBehavior::Start
void Start(AIEntity &owner) override
Definition: FSMBehavior.cpp:21