Grail (C++)  1.2.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
Domain.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_DOMAIN_H
4 #define GRAIL_DOMAIN_H
5 
6 #include "Action/ActionTemplate.hh"
7 #include "WorldState/WorldObject.hh"
8 #include "WorldState/WorldObjectType.hh"
9 
10 #include <string>
11 #include <unordered_map>
12 #include <vector>
13 
14 namespace grail
15 {
16 namespace planner
17 {
18  struct Domain
19  {
21  Domain(const std::vector<WorldObjectType>& types);
22  Domain(const Domain& other) = delete;
23 
24  //REVIEW: consider adding move constructor and move assignment for the rule of 5
25  virtual ~Domain() = default;
26 
27  Domain& operator =(const Domain&) = delete;
28 
33  ActionTemplate& AddActionTemplate(const std::string& name, const std::vector<std::string>& paramNames);
34 
36  WorldObject CreateObjectOfType(const std::string& name) const;
37 
39  unsigned int GetTypeIndex(const std::string& typeName) const;
40 
41  std::vector<std::string> objectTypes{};
42  std::vector<WorldObjectType> types{};
43  std::map<std::string, unsigned int> typemap{};
44  std::vector<ActionTemplate> actionTemplates{};
45  };
46 }
47 }
48 
49 #endif //GRAIL_PLAN_DOMAIN_H
grail::planner::Domain::CreateObjectOfType
WorldObject CreateObjectOfType(const std::string &name) const
Creates and object of a type identified by name parameter.
Definition: Domain.cpp:74
grail::planner::WorldObject
Definition: WorldObject.hh:15
grail::planner::Domain::GetTypeIndex
unsigned int GetTypeIndex(const std::string &typeName) const
Definition: Domain.cpp:79
grail::planner::ActionTemplate
A class representing an action that can be simulated by grail planner.
Definition: ActionTemplate.hh:22
grail::planner::Domain
Definition: Domain.hh:18
grail::planner::Domain::AddActionTemplate
ActionTemplate & AddActionTemplate(const std::string &name, const std::vector< std::string > &paramNames)
Definition: Domain.cpp:62
grail::planner::Domain::Domain
Domain(const std::vector< WorldObjectType > &types)
Definition: Domain.cpp:11