R-TYPE
ComponentManager.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2022
3 ** r-type
4 ** File description:
5 ** ComponentManager
6 */
7 
8 #ifndef COMPONENTMANAGER_HPP_
9 #define COMPONENTMANAGER_HPP_
10 
11 #include "../Entity/EntityManager.hpp"
12 #include "../IncludeComponents.hpp"
13 
14 namespace ECS {
28  IDE,
34 public:
35  ComponentManager() = default;
36  ~ComponentManager() = default;
37 
38  void addComponent(Entity e, ComponentType c, std::shared_ptr<IComp> comp);
39  std::shared_ptr<IComp> getComponent(Entity e, ComponentType c);
40 
41  std::map<ComponentType, std::shared_ptr<IComp>>& getComponentList(Entity entity);
42  std::deque<Entity>& getEntityList(ComponentType type);
43 
44 protected:
45 private:
46  std::map<Entity, std::map<ComponentType, std::shared_ptr<IComp>>> _eentities;
47  std::map<ComponentType, std::deque<Entity>> _centities;
48 };
49 } // namespace ECS
50 
51 #endif /* !COMPONENTMANAGER_HPP_ */
Definition: ComponentManager.hpp:33
std::map< ComponentType, std::shared_ptr< IComp > > & getComponentList(Entity entity)
Definition: ComponentManager.cpp:45
std::shared_ptr< IComp > getComponent(Entity e, ComponentType c)
Definition: ComponentManager.cpp:35
void addComponent(Entity e, ComponentType c, std::shared_ptr< IComp > comp)
Definition: ComponentManager.cpp:16
~ComponentManager()=default
ComponentManager()=default
std::deque< Entity > & getEntityList(ComponentType type)
Definition: ComponentManager.cpp:56
Definition: Entity.hpp:30
Definition: ComponentManager.hpp:14
ComponentType
Definition: ComponentManager.hpp:15
@ SOUND
Definition: ComponentManager.hpp:23
@ NETWORK
Definition: ComponentManager.hpp:32
@ IDE
Definition: ComponentManager.hpp:28
@ CONTROLABLE
Definition: ComponentManager.hpp:27
@ HITBOX
Definition: ComponentManager.hpp:25
@ SPEED
Definition: ComponentManager.hpp:18
@ DAMAGE
Definition: ComponentManager.hpp:21
@ POSITION
Definition: ComponentManager.hpp:20
@ SPRITE
Definition: ComponentManager.hpp:30
@ ACCELERATION
Definition: ComponentManager.hpp:15
@ BULLET
Definition: ComponentManager.hpp:19
@ ROTATION
Definition: ComponentManager.hpp:22
@ BONUS
Definition: ComponentManager.hpp:16
@ SIZE
Definition: ComponentManager.hpp:26
@ WEAPON
Definition: ComponentManager.hpp:31
@ TEXT
Definition: ComponentManager.hpp:29
@ HEALTH
Definition: ComponentManager.hpp:24
@ PATTERN
Definition: ComponentManager.hpp:17