Argentum Online - Cliente
stats_component.h
1 #ifndef __STATS_COMPONENT_H
2 #define __STATS_COMPONENT_H
3 
4 #include <mutex>
5 #include <unordered_map>
6 
7 #include "../../../include/nlohmann/json.hpp"
8 #include "../ECS/component.h"
9 
10 typedef std::unordered_map<std::string, unsigned int> StatValues;
11 
16 class StatsComponent : public Component {
17  private:
18  StatValues max_stat_values;
19  StatValues current_stat_values;
20  int level;
21  std::string current_ability;
22  std::recursive_mutex m;
23 
24  void _update_defense(nlohmann::json entity_info);
25  void _update_attack(nlohmann::json entity_info);
26 
27  public:
39  StatsComponent(int max_hp, int current_hp, int max_mp, int current_mp,
40  int max_xp, int current_xp, int level);
41 
48  unsigned int get_stat_current_value(const std::string &stat_name);
49 
56  unsigned int get_stat_max_value(const std::string &stat_name);
57 
64  void set_stat_current_value(const std::string &stat_name,
65  unsigned int new_value);
66 
73  void set_stat_max_value(const std::string &stat_name,
74  unsigned int new_value);
75 
81  int get_level();
82 
88  void set_level(int new_level);
89 
96  void server_update(nlohmann::json entity_info);
97  void init() override;
98  void update() override;
99 
100  std::string get_ability_name();
101 };
102 
103 #endif
StatsComponent::server_update
void server_update(nlohmann::json entity_info)
Actualiza la componente segun la informacion de actualizacion del servidor.
Definition: stats_component.cpp:77
StatsComponent::init
void init() override
Inicializa el componente con lo que necesite, es llamado en el momento de agregarlo a la entity.
Definition: stats_component.cpp:65
StatsComponent::StatsComponent
StatsComponent(int max_hp, int current_hp, int max_mp, int current_mp, int max_xp, int current_xp, int level)
Crea un objeto StatsComponent.
Definition: stats_component.cpp:7
StatsComponent::set_stat_max_value
void set_stat_max_value(const std::string &stat_name, unsigned int new_value)
Set the stat max value object.
Definition: stats_component.cpp:45
StatsComponent::update
void update() override
Actualiza el componente.
Definition: stats_component.cpp:63
StatsComponent::set_stat_current_value
void set_stat_current_value(const std::string &stat_name, unsigned int new_value)
Setea el valor actual de un stat.
Definition: stats_component.cpp:54
StatsComponent
Componente de stats de cualquier entidad.
Definition: stats_component.h:16
StatsComponent::get_stat_current_value
unsigned int get_stat_current_value(const std::string &stat_name)
Devuelve el valor actual de un stat.
Definition: stats_component.cpp:27
Component
Componente agregable a entidades.
Definition: component.h:10
StatsComponent::set_level
void set_level(int new_level)
Setea el nivel.
Definition: stats_component.cpp:67
StatsComponent::get_stat_max_value
unsigned int get_stat_max_value(const std::string &stat_name)
Devuelve el valor maximo de un stat.
Definition: stats_component.cpp:37
StatsComponent::get_level
int get_level()
Devuelve el nivel.
Definition: stats_component.cpp:72