Grail (C++)  1.3.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
WorldObjectType.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_WORLD_OBJECT_TYPE_H
4 #define GRAIL_WORLD_OBJECT_TYPE_H
5 
6 #include "ParametrizedObject.hh"
7 
8 namespace grail
9 {
10 namespace planner
11 {
14  {
15  public:
16  WorldObjectType(MemoryPool* memory);
17 
20  WorldObjectType(MemoryPool* memory, const std::string& name, const std::vector<std::string>& bases = {});
21  WorldObjectType(const WorldObjectType& other);
22  WorldObjectType(WorldObjectType&& other) = default;
23  virtual ~WorldObjectType() override = default;
24 
25  WorldObjectType& operator =(const WorldObjectType&) = delete;
26  WorldObjectType& operator =(WorldObjectType&&) = delete;
27 
28  bool IsOfType(unsigned int type) const;
29  bool IsOfType(const std::string& typeName) const;
30  void SetTypeIndex(unsigned int id);
31  void InheritFromType(const WorldObjectType& type);
32 
33  unsigned int GetTypeIndex() const;
34  const std::string& GetName() const;
35  const std::vector<std::string>& GetBaseTypes() const;
36 
37  class WorldObject InstantiateObject() const;
38 
39  private:
40  std::string name = "";
41  std::vector<std::string> baseTypes{};
42  unsigned int typeIndex = 0;
43  std::set<unsigned int> typeSet{};
44  };
45 }
46 }
47 
48 #endif //GRAIL_WORLD_OBJECT_TYPE_H
grail::planner::WorldObject
Definition: WorldObject.hh:15
grail::planner::WorldObjectType
A class representing planner WorldObject type - its name and inheritance structure.
Definition: WorldObjectType.hh:13
grail::planner::MemoryPool
The MemoryPool class - preallocated memory container for optimization issues.
Definition: MemoryPool.hh:77
grail::planner::ParametrizedObject
Definition: ParametrizedObject.hh:27