Argentum Online - Cliente
visual_npc_component.h
1 #ifndef __VISUAL_NPC_COMPONENT_H
2 #define __VISUAL_NPC_COMPONENT_H
3 
4 #include "../../../include/nlohmann/json.hpp"
5 #include "../../../include/types.h"
6 #include "../ECS/component.h"
7 #include "../actor.h"
8 #include "../camera.h"
9 #include "../in_game_bar.h"
10 #include "../in_game_text.h"
11 
16 class VisualNPCComponent : public Component {
17  private:
18  int speed; // En tiles/segundo.
19  /* Indica si ya se recibio el primer mensaje de actualizacion de posicion.*/
20  bool initialized;
21  Actor body;
22  int transition_offset_x;
23  int transition_offset_y;
24  InGameText render_name;
25  InGameText render_damage;
26  InGameBar health_bar;
27  bool recently_damaged;
28  SDLTimer damage_render_timer;
29  SDLTimer transition_timer;
30  /* Actualiza el offset de renderizacion. */
31  void _update_offset();
32  void _update_animation(int delta_x, int delta_y);
33  int current_x;
34  int current_y;
35 
36  std::recursive_mutex m;
37 
38  public:
45  VisualNPCComponent(int body_id, int speed, const std::string& name);
47 
53  void set_orientation(direction_t new_orientation);
54  void init() override;
55  void update() override;
56 
62  void draw(Camera& camera);
63 
70  void server_update(nlohmann::json update_info);
71 
78  bool is_moving();
79 
85  void display_damage(int damage);
86 };
87 
88 #endif
VisualNPCComponent::server_update
void server_update(nlohmann::json update_info)
Actualiza el NPC segun la informacion recibida en una actualizacion proveniente del servidor.
Definition: visual_npc_component.cpp:166
InGameBar
Clase usada para mostrar una barra del render.
Definition: in_game_bar.h:10
Camera
Camara, utilizada para renderizar el mapa y las entidades.
Definition: camera.h:20
VisualNPCComponent::init
void init() override
Inicializa el componente con lo que necesite, es llamado en el momento de agregarlo a la entity.
Definition: visual_npc_component.cpp:44
Actor
Objeto renderizable que contiene informacion para las cuatro orientaciones posibles,...
Definition: actor.h:14
SDLTimer
Timer basado en la cuenta de SDL.
Definition: sdl_timer.h:9
VisualNPCComponent::display_damage
void display_damage(int damage)
Indica que se debe renderizar el danio recibido.
Definition: visual_npc_component.cpp:171
InGameText
Clase usada para mostrar texto del render, mediante texto bitmap.
Definition: in_game_text.h:10
VisualNPCComponent::draw
void draw(Camera &camera)
Dibuja el npc.
Definition: visual_npc_component.cpp:51
VisualNPCComponent::set_orientation
void set_orientation(direction_t new_orientation)
Setea la orientacion del NPC.
Definition: visual_npc_component.cpp:161
VisualNPCComponent::VisualNPCComponent
VisualNPCComponent(int body_id, int speed, const std::string &name)
Crea un objeto VisualNPCComponent.
Definition: visual_npc_component.cpp:9
Component
Componente agregable a entidades.
Definition: component.h:10
VisualNPCComponent
Componente visual de los NPCs.
Definition: visual_npc_component.h:16
VisualNPCComponent::update
void update() override
Actualiza el componente.
Definition: visual_npc_component.cpp:130
VisualNPCComponent::is_moving
bool is_moving()
Indica si el NPC se esta moviendo.
Definition: visual_npc_component.cpp:157