CreatureLib/src/Battling/ScriptHandling/ItemUseScript.hpp

35 lines
1.3 KiB
C++

#ifndef ITEMUSESCRIPT_HPP
#define ITEMUSESCRIPT_HPP
#include <Arbutils/Collections/List.hpp>
#include "../../Library/EffectParameter.hpp"
namespace CreatureLib::Battling {
class Creature;
class Battle;
class ItemUseScript {
public:
virtual ~ItemUseScript() = default;
virtual void OnInitialize(
[[maybe_unused]] const ArbUt::List<CreatureLib::Library::EffectParameter * non_null>& parameters){};
/// @brief Is the item an item we are able to use?
[[nodiscard]] virtual bool IsItemUsable() const { return false; }
/// @brief Do we need to use the item on a creature?
[[nodiscard]] virtual bool IsCreatureUseItem() const { return false; }
/// @brief Can the item be used on the given creature.
[[nodiscard]] virtual bool IsUseValidForCreature([[maybe_unused]] Creature* non_null creature) const {
return false;
}
/// @brief Can the item be held?
[[nodiscard]] virtual bool IsHoldable() const { return false; }
virtual void OnUse([[maybe_unused]] Battle* non_null battle) const {}
virtual void OnCreatureUse([[maybe_unused]] Creature* non_null creature, [[maybe_unused]] bool isBattle) const {
}
};
}
#endif // ITEMUSESCRIPT_HPP