Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
WorldState.hh
1 #ifndef GRAIL_WORLD_STATE_H
2 #define GRAIL_WORLD_STATE_H
3 
4 #include <sstream>
5 #include <vector>
6 #include "WorldObject.hh"
7 #include "../Domain.hh"
8 
9 namespace grail
10 {
11  namespace planning
12  {
15  {
16  public:
17  WorldState(MemoryPool* memory, const std::shared_ptr<Domain>& domain,
18  const std::vector<WorldObject>& worldObjects);
19  WorldState(const WorldState& other);
20  WorldState(WorldState&& other) = default;
21  virtual ~WorldState() override = default;
22 
23  WorldState& operator=(const WorldState& other);
24  WorldState& operator=(WorldState&& other) = default;
25 
26  bool operator==(const WorldState& other) const;
27 
28  std::vector<class Action> GetLegalActions() const;
29  std::vector<std::vector<unsigned int>> GenerateParameterLists(
30  const std::vector<std::vector<unsigned int>>& precedingParameterLists,
31  unsigned int searchedTypeIndex) const;
32 
33  const WorldObject* GetObjectByIndex(unsigned int index) const;
34  WorldObject* GetObjectByIndex(unsigned int index);
35  const std::map<unsigned int, WorldObject>& GetObjectMap() const;
36  std::shared_ptr<Domain> GetDomain() const;
37 
38  WorldObject& AddObject(const std::string& typeName);
39 
42  void RemoveObject(unsigned int objectIndex);
43  void AddQueuedObjects();
44  void RemoveQueuedObjects();
45 
47  std::vector<const WorldObject*> GetObjectsOfType(const std::string& typeName) const;
48 
50  std::vector<WorldObject*> GetObjectsOfType(const std::string& typeName);
51 
53  int CountObjectsOfType(const std::string& typeName) const;
54 
55  private:
56  std::shared_ptr<Domain> domain = nullptr;
57  std::map<unsigned int, WorldObject> objects{};
58  std::vector<WorldObject> objectsToAdd{};
59  //TODO: move it out of this class, preferably to a temporal object (that is removed when not needed anymore)
60  //REVIEW: resolve todo
61 
62  std::vector<unsigned int> indicesToRemove{};
63  unsigned int nextIndex = 0;
64  };
65  }
66 }
67 #endif //GRAIL_WORLD_STATE_H
grail::planning::WorldObject
Definition: WorldObject.hh:13
grail::planning::WorldState
A class representing planner world state.
Definition: WorldState.hh:14
grail::planning::ParametrizedObject
Definition: ParametrizedObject.h:20
grail::planning::WorldState::GetObjectsOfType
std::vector< const WorldObject * > GetObjectsOfType(const std::string &typeName) const
Definition: WorldState.cpp:105
grail::MemoryPool
The MemoryPool class - preallocated memory container for optimization issues.
Definition: MemoryPool.hh:73
grail::planning::WorldState::CountObjectsOfType
int CountObjectsOfType(const std::string &typeName) const
Definition: WorldState.cpp:133
grail::planning::WorldState::RemoveObject
void RemoveObject(unsigned int objectIndex)
Definition: WorldState.cpp:81