CreatureLib/src/Battling/Models/LearnedAttack.hpp

36 lines
1.2 KiB
C++
Raw Normal View History

2019-10-23 16:57:50 +00:00
#ifndef CREATURELIB_LEARNEDATTACK_HPP
#define CREATURELIB_LEARNEDATTACK_HPP
2020-05-24 18:57:22 +00:00
#include <memory>
#include "../../Library/Attacks/AttackData.hpp"
2019-10-24 09:04:19 +00:00
#include "AttackLearnMethod.hpp"
2019-10-23 16:57:50 +00:00
namespace CreatureLib::Battling {
2019-10-23 16:57:50 +00:00
class LearnedAttack {
2020-05-24 18:57:22 +00:00
std::shared_ptr<const Library::AttackData> _attack;
uint8_t _maxUses;
uint8_t _remainingUses;
2019-10-24 09:04:19 +00:00
AttackLearnMethod _learnMethod;
2019-10-23 16:57:50 +00:00
public:
2020-05-24 18:57:22 +00:00
LearnedAttack(const std::shared_ptr<const CreatureLib::Library::AttackData>& attack, uint8_t maxUses,
AttackLearnMethod learnMethod);
LearnedAttack(const std::shared_ptr<const CreatureLib::Library::AttackData>& attack,
AttackLearnMethod learnMethod);
virtual ~LearnedAttack() = default;
2020-05-24 18:57:22 +00:00
const std::shared_ptr<const Library::AttackData>& GetAttack() const noexcept;
2020-04-04 11:36:13 +00:00
uint8_t GetMaxUses() const noexcept;
uint8_t GetRemainingUses() const noexcept;
AttackLearnMethod GetLearnMethod() const noexcept;
2019-10-24 09:04:19 +00:00
2020-04-04 11:36:13 +00:00
virtual bool TryUse(uint8_t uses) noexcept;
virtual void DecreaseUses(uint8_t amount) noexcept;
virtual void RestoreUses(uint8_t amount) noexcept;
virtual void RestoreAllUses() noexcept;
2019-10-23 16:57:50 +00:00
};
}
#endif // CREATURELIB_LEARNEDATTACK_HPP