PkmnLib.NET/PkmnLib.Dynamic/Models/Choices/TurnChoice.cs

57 lines
1.4 KiB
C#

using PkmnLib.Dynamic.ScriptHandling;
namespace PkmnLib.Dynamic.Models.Choices;
public interface ITurnChoice : IScriptSource
{
/// <summary>
/// The user of the turn choice
/// </summary>
IPokemon User { get; }
/// <summary>
/// The speed of the user at the beginning of the turn.
/// </summary>
uint Speed { get; set; }
/// <summary>
/// This random value is set at the beginning of the turn. It is used for tie breaking of the
/// turn order in a predictable way, regardless of implementation and hardware.
/// </summary>
uint RandomValue { get; set; }
/// <summary>
/// Whether the choice has failed. A failed choice will stop running, and execute special
/// fail handling during turn execution.
/// </summary>
bool HasFailed { get; }
/// <summary>
/// Fails the choice. This will prevent it from executing and run a specific fail handling during
/// execution. Note that this can not be undone.
/// </summary>
public void Fail();
}
public abstract class TurnChoice : ScriptSource, ITurnChoice
{
protected TurnChoice(IPokemon user)
{
User = user;
}
public IPokemon User { get; }
public uint Speed { get; set; }
public uint RandomValue { get; set; }
public bool HasFailed { get; private set; }
public void Fail()
{
HasFailed = true;
}
}