Grail (C++)  1.4.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
FiniteStateMachineBuilder.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_FINITE_STATE_MACHINE_BUILDER_H
4 #define GRAIL_FINITE_STATE_MACHINE_BUILDER_H
5 
6 #include "FiniteStateMachine.hh"
7 #include "State.hh"
8 
9 namespace grail
10 {
11 namespace fsm
12 {
17  {
18  public:
25  FiniteStateMachineBuilder(std::shared_ptr<State> initialState, const std::string& stateMachineName);
26 
34  FiniteStateMachineBuilder& AddTransition(std::shared_ptr<State> sourceState,
35  std::shared_ptr<State> destinationState,
36  std::function<bool()> condition);
37 
41  FiniteStateMachine Build() const;
42 
43  private:
44  std::vector<FiniteStateMachine::Transition> transitions;
45  std::shared_ptr<State> initialState;
46  std::string stateMachineName;
47  };
48 }
49 }
50 
51 #endif //GRAIL_FINITE_STATE_MACHINE_BUILDER_H
grail::fsm::FiniteStateMachine
The FiniteStateMachine class - Class representing basic Finite State Machine.
Definition: FiniteStateMachine.hh:23
grail::fsm::FiniteStateMachineBuilder::Build
FiniteStateMachine Build() const
Build - Builds a finite state machine from settings provided to the builder.
Definition: FiniteStateMachineBuilder.cpp:22
grail::fsm::FiniteStateMachineBuilder::AddTransition
FiniteStateMachineBuilder & AddTransition(std::shared_ptr< State > sourceState, std::shared_ptr< State > destinationState, std::function< bool()> condition)
AddTransition - Adds a transition to the finite state machine. Requires a source state,...
Definition: FiniteStateMachineBuilder.cpp:14
grail::fsm::FiniteStateMachineBuilder::FiniteStateMachineBuilder
FiniteStateMachineBuilder(std::shared_ptr< State > initialState, const std::string &stateMachineName)
FiniteStateMachineBuilder - Constructs a finite state machine builder. Accepts the name of the finite...
Definition: FiniteStateMachineBuilder.cpp:9
grail::fsm::FiniteStateMachineBuilder
The FiniteStateMachineBuilder class - Builder for finite state machine.
Definition: FiniteStateMachineBuilder.hh:16