35 lines
1.3 KiB
C++
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
|