CreatureLib/src/Library/Attacks/SecondaryEffect.hpp

34 lines
1.2 KiB
C++

#ifndef CREATURELIB_SECONDARYEFFECT_HPP
#define CREATURELIB_SECONDARYEFFECT_HPP
#include <Arbutils/Collections/List.hpp>
#include <any>
#include "../EffectParameter.hpp"
namespace CreatureLib::Library {
class SecondaryEffect {
private:
float _chance;
ArbUt::StringView _effectName;
ArbUt::List<EffectParameter * non_null> _parameters;
public:
SecondaryEffect() noexcept : _chance(0), _effectName() {}
SecondaryEffect(float chance, const ArbUt::StringView& effectName,
const ArbUt::List<EffectParameter * non_null>& parameters) noexcept
: _chance(chance), _effectName(effectName), _parameters(parameters) {}
~SecondaryEffect() noexcept {
for (auto p : _parameters) {
delete p;
}
}
constexpr inline float GetChance() const noexcept { return _chance; }
constexpr inline const ArbUt::StringView& GetEffectName() const noexcept { return _effectName; }
const inline ArbUt::List<EffectParameter * non_null>& GetParameters() const noexcept { return _parameters; }
};
}
#endif // CREATURELIB_SECONDARYEFFECT_HPP