Grail (C++)  1.2.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
GoalSelector.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_GOAL_SELECTOR_H
4 #define GRAIL_GOAL_SELECTOR_H
5 
6 #include "Goal.hh"
7 
8 namespace grail
9 {
10 namespace planner
11 {
13  {
14  public:
15  virtual void SetNewGoal(std::unique_ptr<Goal> newGoal, AIEntity& entity) = 0;
16  virtual const Goal* GetCurrentGoal() const = 0;
17  };
18 
22  {
23  public:
24  GoalSelector() = default;
25  GoalSelector(const GoalSelector&) = default;
26  GoalSelector(GoalSelector&&) = default;
27 
28  virtual ~GoalSelector() = default;
29 
30  GoalSelector& operator =(const GoalSelector&) = default;
31  GoalSelector& operator =(GoalSelector&&) = default;
32 
34  virtual void UpdateGoal(IGoalAcceptor& goalAcceptor, AIEntity& entity) = 0;
35  };
36 }
37 }
38 #endif //GRAIL_GOAL_SELECTOR_H
grail::planner::GoalSelector
Definition: GoalSelector.hh:21
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
grail::planner::GoalSelector::UpdateGoal
virtual void UpdateGoal(IGoalAcceptor &goalAcceptor, AIEntity &entity)=0
This method should invoke goalAcceptor.setNewGoal whenever a new goal is selected.
grail::planner::IGoalAcceptor
Definition: GoalSelector.hh:12
grail::planner::Goal
Represents a planner goal, used by PlannerReasoner.
Definition: Goal.hh:16