40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
namespace PkmnLib.Dynamic.Models;
|
|
|
|
/// <summary>
|
|
/// The result of a battle.
|
|
/// </summary>
|
|
public record struct BattleResult
|
|
{
|
|
private BattleResult(bool conclusiveResult, byte? winningSide)
|
|
{
|
|
ConclusiveResult = conclusiveResult;
|
|
WinningSide = winningSide;
|
|
}
|
|
|
|
/// <summary>
|
|
/// An inconclusive battle result. This means no side has won.
|
|
/// </summary>
|
|
public static BattleResult Inconclusive => new(false, null);
|
|
|
|
/// <summary>
|
|
/// A conclusive battle result. This means one side has won.
|
|
/// </summary>
|
|
public static BattleResult Conclusive(byte winningSide) => new(true, winningSide);
|
|
|
|
/// <summary>
|
|
/// Whether the battle has a conclusive result. If false, no side has won.
|
|
/// </summary>
|
|
public bool ConclusiveResult { get; }
|
|
|
|
/// <summary>
|
|
/// The side that won the battle. If null, no side has won.
|
|
/// </summary>
|
|
public byte? WinningSide { get; }
|
|
|
|
/// <summary>
|
|
/// The Pokémon that were captured during the battle. These are the underlying Pokémon, so they remain
|
|
/// valid after the battle has been disposed. This is set for both conclusive and inconclusive results, as
|
|
/// captures complete the moment they happen.
|
|
/// </summary>
|
|
public IReadOnlyList<IPokemon> CapturedPokemon { get; init; } = [];
|
|
} |