Argentum Online - Servidor
character_manager.h
1 #ifndef CHARACTER_MANAGER_H
2 #define CHARACTER_MANAGER_H
3 
4 #include <fstream>
5 #include <iostream>
6 #include <map>
7 #include <mutex>
8 
9 #include "../include/types.h"
10 #include "game/items/item_container.h"
11 #include "game/position.h"
12 
13 #define MAX_CHAR_NAME 15
14 
15 typedef struct character {
16  char name[MAX_CHAR_NAME + 1];
17  int map_id;
19  uint32_t head_id;
20  uint32_t body_id;
21  ItemId helmet_id;
22  ItemId armor_id;
23  ItemId shield_id;
24  ItemId weapon_id;
25  unsigned int current_hp;
26  unsigned int current_mp;
28  class_type_t class_type;
29  race_type_t race_type;
30  unsigned int current_level;
31  unsigned int current_exp;
32  bool alive;
33  inventory_t vault;
34 } character_t;
35 
36 typedef uint32_t CharId;
37 
38 class CharacterNotFoundException : public std::exception {
39  public:
40  const char *what() const throw();
41 };
42 
44  private:
45  std::mutex m;
46  int char_count;
47  std::fstream f_char_stream;
48  std::fstream f_map_stream;
49  std::map<std::string, CharId> char_map;
50 
51  public:
60  CharacterManager(const char *f_char, const char *f_map);
68  bool character_exists(std::string name);
69 
76  void add_character(const nlohmann::json &character_info);
84  void set_character(const nlohmann::json &character_info);
85 
93  CharId get_char_id(std::string name);
94 
102  nlohmann::json get_character(std::string name);
103 
109  void save();
110 
117  void print_character(std::string name);
118 
124 };
125 
126 #endif // CHARACTER_MANAGER_H
inventory
Definition: item_container.h:32
CharacterNotFoundException
Definition: character_manager.h:38
CharacterManager::save
void save()
Hace el dump del diccionario actual al archivo de diccionarios, junto con el char_count.
Definition: character_manager.cpp:221
CharacterManager::~CharacterManager
~CharacterManager()
Debe realizarse un save.
Definition: character_manager.cpp:119
CharacterManager
Definition: character_manager.h:43
CharacterManager::print_character
void print_character(std::string name)
Imprime la informacion de un personaje. Si no existe, lanza CharacterNotFoundException.
Definition: character_manager.cpp:230
character
Definition: character_manager.h:15
CharacterManager::get_char_id
CharId get_char_id(std::string name)
Devuelve el CharId asociado al player_name. Si no existe, lanza CharacterNotFoundException.
Definition: character_manager.cpp:185
CharacterManager::CharacterManager
CharacterManager(const char *f_char, const char *f_map)
Se carga el diccionario de personajes, y se tienen temporalmente hardcodeados la creación de algunos ...
Definition: character_manager.cpp:12
CharacterManager::get_character
nlohmann::json get_character(std::string name)
Devuelve el character asociado al name por movimiento. Si no existe, lanza CharacterNotFoundException...
Definition: character_manager.cpp:191
CharacterManager::set_character
void set_character(const nlohmann::json &character_info)
Se utiliza para persistir el estado actual de la entidad character, al archivo de structs....
Definition: character_manager.cpp:176
CharacterManager::add_character
void add_character(const nlohmann::json &character_info)
Agrega un personaje al archivo de structs y al diccionario, si ya existe, lanza CharacterAlreadyExist...
Definition: character_manager.cpp:158
CharacterManager::character_exists
bool character_exists(std::string name)
Devuelve true si existe el character, false si no.
Definition: character_manager.cpp:172
position
Definition: position.h:8