Argentum Online - Cliente
visual_character_component.h
1 #ifndef __VISUAL_CHARACTER_COMPONENT
2 #define __VISUAL_CHARACTER_COMPONENT
3 #include <unordered_map>
4 
5 #include "../../../include/types.h"
6 #include "../ECS/component.h"
7 #include "../actor.h"
8 #include "../camera.h"
9 #include "../in_game_text.h"
10 #include "../in_game_bar.h"
11 #include "../visual_effect.h"
12 
13 
14 typedef std::unordered_map<std::string, Actor> Parts;
15 typedef std::unordered_map<std::string, int> PartIds;
16 
22  private:
23  int speed; // En tiles/segundo.
24  bool initialized;
25  int transition_offset_x;
26  int transition_offset_y;
27  Parts parts;
28  PartIds part_ids;
29  InGameText render_name;
30  InGameText render_damage;
31  InGameBar health_bar;
32  VisualEffect meditation_effect;
33  bool recently_damaged;
34  bool is_meditating;
35  SDLTimer damage_render_timer;
36  SDLTimer transition_timer;
37  /* Actualiza el offset de renderizacion. */
38  void _update_offset();
39  void _update_animation(int delta_x, int delta_y);
40  int current_x;
41  int current_y;
42 
43  /* Indica si ya se recibio el primer mensaje de actualizacion de posicion.*/
44  std::recursive_mutex m;
45 
46  void _draw_if_present(Camera &camera, const std::string &part_name);
47 
48  public:
63  VisualCharacterComponent(int head_id, int body_id, int weapon_id,
64  int shield_id, int helmet_id, int armor_id,
65  int speed, const std::string& name);
67 
74  Actor &get_part(const std::string &type);
75 
83  void server_update(nlohmann::json update_info);
84 
94  void set_part(const std::string &type, const std::string &texture_family,
95  int new_part_id, visual_info_t visual_info);
96 
102  void set_orientation(direction_t new_orientation);
103  void init() override;
104  void update() override;
105 
111  void draw(Camera &camera);
112 
119  int get_part_id(const std::string &part_name);
120 
127  bool is_moving();
128 
134  void display_damage(int damage);
135 };
136 
137 #endif
InGameBar
Clase usada para mostrar una barra del render.
Definition: in_game_bar.h:10
VisualCharacterComponent
Componente visual de los personajes.
Definition: visual_character_component.h:21
Camera
Camara, utilizada para renderizar el mapa y las entidades.
Definition: camera.h:20
VisualCharacterComponent::get_part_id
int get_part_id(const std::string &part_name)
Devuelve el id asociado a una parte.
Definition: visual_character_component.cpp:248
VisualCharacterComponent::update
void update() override
Actualiza el componente.
Definition: visual_character_component.cpp:215
VisualCharacterComponent::is_moving
bool is_moving()
Indica si el personaje se esta moviendo.
Definition: visual_character_component.cpp:244
VisualCharacterComponent::set_part
void set_part(const std::string &type, const std::string &texture_family, int new_part_id, visual_info_t visual_info)
Cambia una parte.
Definition: visual_character_component.cpp:62
Actor
Objeto renderizable que contiene informacion para las cuatro orientaciones posibles,...
Definition: actor.h:14
VisualCharacterComponent::set_orientation
void set_orientation(direction_t new_orientation)
Setea la nueva orientacion del personaje.
Definition: visual_character_component.cpp:184
part_visual_info
Struct de informacion visual.
Definition: renderizable_object.h:15
SDLTimer
Timer basado en la cuenta de SDL.
Definition: sdl_timer.h:9
VisualCharacterComponent::get_part
Actor & get_part(const std::string &type)
Devuelve una de las partes visuales.
Definition: visual_character_component.cpp:129
InGameText
Clase usada para mostrar texto del render, mediante texto bitmap.
Definition: in_game_text.h:10
VisualCharacterComponent::display_damage
void display_damage(int damage)
Indica que se debe renderizar el danio recibido.
Definition: visual_character_component.cpp:253
VisualEffect
Clase para mostrar efectos visuales en posiciones dinamicas.
Definition: visual_effect.h:9
VisualCharacterComponent::draw
void draw(Camera &camera)
Dibuja el personaje.
Definition: visual_character_component.cpp:96
VisualCharacterComponent::VisualCharacterComponent
VisualCharacterComponent(int head_id, int body_id, int weapon_id, int shield_id, int helmet_id, int armor_id, int speed, const std::string &name)
Crea un objeto VisualCharacterComponent.
Definition: visual_character_component.cpp:11
Component
Componente agregable a entidades.
Definition: component.h:10
VisualCharacterComponent::server_update
void server_update(nlohmann::json update_info)
Actualiza el jugador segun la informacion de actualizacion obtenida del servidor.
Definition: visual_character_component.cpp:43
VisualCharacterComponent::init
void init() override
Inicializa el componente con lo que necesite, es llamado en el momento de agregarlo a la entity.
Definition: visual_character_component.cpp:55