Argentum Online - Servidor
player_combat_component.h
1 #ifndef PLAYER_COMBAT_COMPONENT_H
2 #define PLAYER_COMBAT_COMPONENT_H
3 
4 #include <vector>
5 
6 #include "../../attribute_manager.h"
7 #include "../../items/armor.h"
8 #include "../../map_log_factory.h"
9 #include "../player.h"
10 #include "combat_component.h"
11 
12 class Weapon;
13 
15  private:
16  Player& player;
17  stats_t stats;
18  float attack_speed;
19  unsigned int attack_accumulator;
20  unsigned int regen_counter;
21  Armor* helmet;
22  Armor* armor;
23  Armor* shield;
24  Weapon* weapon;
25  bool is_meditating;
26  unsigned int meditate_counter;
27  bool is_resuscitating;
28  int resuscitate_counter;
29 
30  public:
31  PlayerCombatComponent(ItemId helmet_id, ItemId armor_id, ItemId shield_id,
32  ItemId weapon_id, unsigned int current_hp,
33  unsigned int current_mp, stats_t stats,
34  Player& player, float attack_speed);
36 
37  std::vector<map_log_t> use_ability(Entity* target, position_t source,
38  position_t dest);
39  attack_t attack() override;
40  attack_result_t receive_damage(attack_t attack) override;
41 
42  Armor* equip(Armor* armor);
43  Weapon* equip(Weapon* weapon);
44  Armor* unequip_helmet();
45  Armor* unequip_chest();
46  Armor* unequip_shield();
47  Weapon* unequip_weapon();
48 
49  void regen_max();
50  void regen(unsigned int amount_hp, unsigned int amount_mp);
51  void regen_hp(unsigned int amount_hp);
52  void regen_mp(unsigned int amount_mp);
53  void set_meditate(bool meditating);
54  void resuscitate(int delta_t);
55 
56  void update(uint64_t delta_t) override;
57  bool attack_ready() const override;
58 
59  nlohmann::json get_data() const override;
60  nlohmann::json get_persist_data() const;
61 };
62 
63 #endif // PLAYER_COMBAT_COMPONENT_H
Weapon
Definition: weapon.h:33
Armor
Definition: armor.h:26
Entity
Definition: entity.h:15
stats
Definition: attribute_manager.h:9
PlayerCombatComponent
Definition: player_combat_component.h:14
attack_result
Definition: combat_component.h:13
Player
Definition: player.h:14
position
Definition: position.h:8
attack
Definition: combat_component.h:8
CombatComponent
Definition: combat_component.h:19