PkmnLib.NET/PkmnLib.Dynamic/ScriptHandling/ItemScript.cs

62 lines
1.6 KiB
C#
Raw Normal View History

2025-01-10 10:11:50 +00:00
using PkmnLib.Dynamic.Models;
2025-01-10 10:58:23 +00:00
using PkmnLib.Static;
2025-01-10 10:11:50 +00:00
using PkmnLib.Static.Utils;
namespace PkmnLib.Dynamic.ScriptHandling;
public abstract class ItemScript : IDeepCloneable
{
2025-01-10 10:58:23 +00:00
protected ItemScript(IItem item)
{
Item = item;
}
protected IItem Item { get; private set; }
2025-03-02 16:19:57 +00:00
2025-01-10 10:11:50 +00:00
/// <summary>
/// Initializes the script with the given parameters for a specific item
/// </summary>
public virtual void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
}
/// <summary>
/// Returns whether the item is usable in the current context.
/// </summary>
public virtual bool IsItemUsable => false;
/// <summary>
/// Returns whether the item requires a target to be used.
/// </summary>
public virtual bool RequiresTarget => false;
/// <summary>
/// Returns whether the item is usable on the given target.
/// </summary>
public virtual bool IsTargetValid(IPokemon target) => false;
/// <summary>
/// Returns whether the item can be held by a Pokémon.
/// </summary>
public virtual bool IsHoldable => false;
/// <summary>
/// Returns whether the item can be held by the given target.
/// </summary>
public virtual bool CanTargetHold(IPokemon pokemon) => false;
/// <summary>
/// Handles the use of the item.
/// </summary>
public virtual void OnUse()
{
}
/// <summary>
/// Handles the use of the item on the given target.
/// </summary>
/// <param name="target"></param>
public virtual void OnUseWithTarget(IPokemon target)
{
}
}