Argentum Online - Servidor
map_transitions.h
1 #ifndef MAP_TRANSITIONS_H
2 #define MAP_TRANSITIONS_H
3 
4 #include <queue>
5 #include <unordered_map>
6 
7 #include "../../include/nlohmann/json.hpp"
8 #include "../../include/types.h"
9 #include "position.h"
10 
11 typedef struct map_change {
12  std::string name;
13  MapId map;
15 } map_change_t;
16 
28  private:
29  MapId map_id;
30  std::queue<map_change_t> changes_queue;
38  std::unordered_map<position_t, std::pair<MapId, position_t>, PositionHasher,
40  teleports;
41 
42  public:
43  MapTransitions(MapId map_id, nlohmann::json changes, int width, int height);
44  ~MapTransitions();
45 
55  void push_if_transition(std::string name, position_t position);
56 
64  void teleport(std::string name, position_t dest);
65 
66  std::queue<map_change_t>& get_changes();
67 };
68 
69 #endif // MAP_TRANSITIONS_H
PositionHasher
Definition: position.h:23
map_change
Definition: map_transitions.h:11
MapTransitions::teleport
void teleport(std::string name, position_t dest)
Agregar una transición forzada de un jugador a una posición de destino en el mismo mapa.
Definition: map_transitions.cpp:54
MapTransitions::push_if_transition
void push_if_transition(std::string name, position_t position)
Agrega la transición en caso de ser necesaria de un jugador.
Definition: map_transitions.cpp:42
PositionComparator
Definition: position.h:31
MapTransitions
Clase que se encarga de manejar las transiciones en cada mapa.
Definition: map_transitions.h:27
position
Definition: position.h:8