3 #ifndef GRAIL_SYNCHRONIZED_ENTITY_CONTAINER_H 
    4 #define GRAIL_SYNCHRONIZED_ENTITY_CONTAINER_H 
   25         const std::pair<std::shared_ptr<AIEntity>, 
int> operator [](std::size_t index);
 
   27         void SetData(
const std::vector<std::pair<std::shared_ptr<AIEntity>, 
int>>& newData);
 
   29         void MarkDone(std::size_t index);
 
   30         ProcessingStatus GetStatus(std::size_t index);
 
   32         bool IsEntityPriorityValid(std::size_t index);
 
   33         int GetCurrentPriority();
 
   36         void SetNextPriority();
 
   37         void MarkDoneNonBlocking(std::size_t index);
 
   39         std::vector<std::pair<std::shared_ptr<AIEntity>, 
int>> data{};
 
   40         std::size_t dataDone{};
 
   41         std::size_t priorityDone{};
 
   44         int lowestPriority = {std::numeric_limits<int>::max()};
 
   45         int highestPriority = {std::numeric_limits<int>::min()};
 
   46         int currentPriority = {0};
 
   47         std::map<int, std::size_t> entitiesPerPriority{};
 
   51 #endif  //GRAIL_SYNCHRONIZED_ENTITY_CONTAINER_H