Argentum Online - Cliente
entity_manager.h
1 #ifndef ENTITY_MANAGER_H
2 #define ENTITY_MANAGER_H
3 
4 #include <memory>
5 #include <mutex>
6 #include <unordered_map>
7 #include <vector>
8 
9 typedef unsigned int EntityId;
10 
11 class Entity;
12 
18  private:
19  std::unordered_map<EntityId, std::unique_ptr<Entity>> entities;
20  std::unordered_map<EntityId, bool> updated;
21  std::mutex m;
22  EntityManager();
23 
24  public:
30  static EntityManager& get_instance();
31 
36  void update();
37  ~EntityManager();
38 
45  Entity& create(unsigned int entity_id);
46 
53  Entity& get_from_id(unsigned int entity_id);
54 
62  bool has_entity(unsigned int entity_id);
63 
69  std::vector<EntityId> get_entity_id_list();
70 
75  void update_initialize();
76 
82  void remove_non_updated();
83 
88  void clean();
89 
94  void empty();
95 };
96 
97 #endif // ENTITY_MANAGER_H
EntityManager::empty
void empty()
Remueve todas las entidades.
Definition: entity_manager.cpp:83
EntityManager::get_instance
static EntityManager & get_instance()
Devuelve el EntityManager, que es un singleton.
Definition: entity_manager.cpp:8
EntityManager::get_from_id
Entity & get_from_id(unsigned int entity_id)
Devuelve una entidad segun su id.
Definition: entity_manager.cpp:48
EntityManager::create
Entity & create(unsigned int entity_id)
Crea una nueva entidad.
Definition: entity_manager.cpp:22
EntityManager::has_entity
bool has_entity(unsigned int entity_id)
Indica si una entidad existe.
Definition: entity_manager.cpp:43
EntityManager::get_entity_id_list
std::vector< EntityId > get_entity_id_list()
Devuelve un vector con los ids de todas las entidades existentes.
Definition: entity_manager.cpp:56
Entity
Entidad (NPCs y personajes)
Definition: entity.h:17
EntityManager::update
void update()
Actualiza todas las entidades.
Definition: entity_manager.cpp:17
EntityManager::remove_non_updated
void remove_non_updated()
Indica que todas las entidades no actualizadas deben ser quitadas en el proximo clean.
Definition: entity_manager.cpp:72
EntityManager::update_initialize
void update_initialize()
Marca todas las entidades como no actualizadas.
Definition: entity_manager.cpp:65
EntityManager::clean
void clean()
Quita todas las entidades marcadas con alive = false.
Definition: entity_manager.cpp:29
EntityManager
Manager de entidades.
Definition: entity_manager.h:17