Advertisement
BeneFager

Untitled

Jan 11th, 2022
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. class Manager
  2. {
  3. private:
  4.     std::vector<std::unique_ptr<Entity>> entities; //list of entities
  5.     std::array<std::vector<Entity *>, maxGroups> groupedEntities; //group of entities
  6.  
  7. public:
  8.  
  9.     void update()
  10.     {
  11.         for(auto &e : entities) e->update();
  12.     }
  13.  
  14.     void draw()
  15.     {
  16.         for(auto &e : entities) e->draw();
  17.     }
  18.  
  19.     void refresh()
  20.     {
  21.         for(auto i(0u); i < maxGroups; i++)
  22.         {
  23.             auto &v(groupedEntities[i]);
  24.             v.erase(
  25.                 std::remove_if(std::begin(v), std::end(v), [i](Entity *mEntity)
  26.                                {
  27.                                    return !mEntity->isActive() || !mEntity->hasGroup(i);
  28.                                }), std::end(v));
  29.         }
  30.  
  31.  
  32.  
  33.         entities.erase(std::remove_if(std::begin(entities), std::end(entities),
  34.                                       [](const std::unique_ptr<Entity> &mEntity)
  35.                                       {
  36.                                           return !mEntity->isActive();
  37.                                       }),
  38.                        std::end(entities));
  39.     }
  40.  
  41.     //Adding entities to groups
  42.     void AddToGroup(Entity *mEntity, Group mGroup)
  43.     {
  44.         groupedEntities[mGroup].emplace_back(mEntity);
  45.     }
  46.     //fetching entity group
  47.     std::vector<Entity *> &getGroup(Group mGroup)
  48.     {
  49.         return groupedEntities[mGroup];
  50.     }
  51.  
  52.     //Adding an entity
  53.     Entity &addentity()
  54.     {
  55.         Entity *e = new Entity(*this);
  56.         std::unique_ptr<Entity> uPtr{ e };
  57.         entities.emplace_back(std::move(uPtr));
  58.         return *e;
  59.     }
  60. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement