Argentum Online - Servidor
|
|
6 #include <unordered_map>
7 #include <unordered_set>
10 #include "../../include/nlohmann/json.hpp"
11 #include "../../include/types.h"
12 #include "actions/action.h"
13 #include "entities/entity.h"
14 #include "entities/entity_factory.h"
15 #include "items/item.h"
16 #include "map_log_factory.h"
17 #include "map_transitions.h"
18 #include "monster_spawner.h"
32 std::unordered_map<position_t, T, PositionHasher, PositionComparator>;
35 typedef std::unordered_map<EntityId, position_t> PositionMap;
38 typedef ObjectMatrix<Entity*> EntityMatrix;
41 typedef std::unordered_set<position_t, PositionHasher, PositionComparator>
45 typedef ObjectMatrix<Item*> LootMatrix;
57 PositionMap position_map;
59 EntityMatrix entity_matrix;
61 LootMatrix loot_matrix;
63 PositionSet collision_map;
69 std::queue<entity_action_t> actions;
70 std::queue<map_log_t> update_logs;
73 nlohmann::json visual_map_info;
84 position_t get_nearest_free_position(ObjectMatrix<T> object_matrix,
113 void rm_entity(EntityId entity_id);
116 Map(MapId map_id,
const std::string& map_name,
bool is_safe,
117 const nlohmann::json& map_description,
const nlohmann::json& map_mobs,
118 const nlohmann::json& map_transitions);
121 Map(
const Map& other) =
delete;
123 const std::string& get_name();
156 nlohmann::json
add_player(nlohmann::json player_info);
165 nlohmann::json
rm_player(EntityId entity_id);
171 bool is_safe()
const;
183 unsigned int distance,
184 entity_type_t entity_type);
200 void update(uint64_t delta_t);
237 void drop_loot(EntityId entity_id,
const std::vector<Item*>& items);
void update(uint64_t delta_t)
Actualiza todas las entidades que contiene segun el delta_t transcurrido.
Definition: map.cpp:191
nlohmann::json get_loot_data()
Obtiene la información de los items del mapa.
Definition: map.cpp:246
position_t get_nearest_entity_pos(position_t entity_pos, unsigned int distance, entity_type_t entity_type)
Obtener la posición de la entidad de un tipo más cercana.
Definition: map.cpp:261
const PositionMap get_position_map() const
Obtiene una copia del mapa de posiciones de las entidades.
Definition: map.cpp:226
Definition: map_log_factory.h:17
static nlohmann::json get_position_data(const PositionMap &position_map)
Realizar una copia en forma de json de un mapa de posiciones.
Definition: map.cpp:217
void move(EntityId entity_id, position_t steps)
Mueve la entidad asociada al entity_id hacia la posicion relativa steps.
Definition: map.cpp:109
bool dirty_loot() const
Verificar si hubo un cambio en los items caidos en el mapa desde la última vez que se utilizó este mé...
Definition: map.cpp:243
Clase que mantiene los "spawns" de monstruos en un mapa.
Definition: monster_spawner.h:20
std::queue< map_change_t > & get_transitions()
Obtiene la cola de transiciones del mapa.
Definition: map.cpp:133
nlohmann::json get_map_data()
Obtiene la información gráfica del mapa en forma de json.
Definition: map.cpp:257
Item * pickup_loot(EntityId entity_id)
Intenta obtener de la posición donde se encuentra la entidad el item que haya allí.
Definition: map.cpp:304
void teleport(EntityId player_id, position_t dest)
Teletransporta a un jugador a través de una transición.
Definition: map.cpp:137
void push_log(const map_log_t &log)
Agrega un log al mapa.
Definition: map.cpp:205
Definition: entity_factory.h:10
nlohmann::json rm_player(EntityId entity_id)
Eliminar a un jugador identificado por su id del mapa.
Definition: map.cpp:156
nlohmann::json get_entity_data()
Obtiene la información de las entidades del mapa.
Definition: map.cpp:233
Clase que se encarga de manejar las transiciones en cada mapa.
Definition: map_transitions.h:27
nlohmann::json add_player(nlohmann::json player_info)
Agrega un jugador al mapa a partir de su información.
Definition: map.cpp:146
std::queue< map_log_t > & get_update_logs()
Obtiene la cola de "logs" del mapa.
Definition: map.cpp:213
bool dirty_entities() const
Verificar si hubo un cambio en las entidades del mapa desde la última vez que se utilizó este método.
Definition: map.cpp:230
bool entity_exists(EntityId entity_id)
Verificar si una entidad existe o no.
Definition: map.cpp:175
void push_action(EntityId entity_id, Action *action)
Ejecuta sobre la entidad asociada al id la accion.
Definition: map.cpp:209
void drop_loot(EntityId entity_id, Item *item)
Deja el item pasado por parámetro en la posición de la entidad.
Definition: map.cpp:293