Files
CreatureLib/src/Battling/Models/LearnedAttack.hpp
Deukhoofd e1d8348b2f
All checks were successful
continuous-integration/drone/push Build is passing
Fixes project being completely dirty every build requiring constant full rebuilds and slowing down tooling.
Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
2021-10-30 14:24:38 +02:00

42 lines
1.5 KiB
C++

#ifndef CREATURELIB_LEARNEDATTACK_HPP
#define CREATURELIB_LEARNEDATTACK_HPP
#include <Arbutils/Memory/Memory.hpp>
#include "../../Library/Attacks/AttackData.hpp"
#include "AttackLearnMethod.hpp"
namespace CreatureLib::Battling {
class LearnedAttack {
ArbUt::BorrowedPtr<const Library::AttackData> _attack;
uint8_t _maxUses;
uint8_t _remainingUses;
AttackLearnMethod _learnMethod;
public:
LearnedAttack(const ArbUt::BorrowedPtr<const CreatureLib::Library::AttackData>& attack, uint8_t maxUses,
AttackLearnMethod learnMethod);
LearnedAttack(const ArbUt::BorrowedPtr<const CreatureLib::Library::AttackData>& attack,
AttackLearnMethod learnMethod);
virtual ~LearnedAttack() = default;
const ArbUt::BorrowedPtr<const Library::AttackData>& GetAttack() const noexcept;
uint8_t GetMaxUses() const noexcept;
uint8_t GetRemainingUses() const noexcept;
AttackLearnMethod GetLearnMethod() const noexcept;
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;
virtual LearnedAttack* Clone() const {
auto* attack = new LearnedAttack(_attack, _maxUses, _learnMethod);
attack->_remainingUses = _remainingUses;
return attack;
}
};
}
#endif // CREATURELIB_LEARNEDATTACK_HPP