Move all battle state from IPokemon to an ephemeral IBattlePokemon wrapper
This commit is contained in:
@@ -6,7 +6,7 @@ namespace PkmnLib.Dynamic.AI.Explicit;
|
||||
/// <summary>
|
||||
/// An option where a move is used against a target
|
||||
/// </summary>
|
||||
public record struct MoveOption(AIMoveState Move, IBattle Battle, IPokemon? Target, uint EstimatedDamage = 0);
|
||||
public record struct MoveOption(AIMoveState Move, IBattle Battle, IBattlePokemon? Target, uint EstimatedDamage = 0);
|
||||
|
||||
/// <summary>
|
||||
/// A function that takes an explicit AI and a move option and returns a boolean value.
|
||||
@@ -16,8 +16,8 @@ public delegate bool AIBoolHandler(IExplicitAI ai, MoveOption option);
|
||||
/// <summary>
|
||||
/// A function for returning whether a Pokemon should switch.
|
||||
/// </summary>
|
||||
public delegate bool AISwitchBoolHandler(IExplicitAI ai, IPokemon pokemon, IBattle battle,
|
||||
IReadOnlyList<IPokemon> reserves);
|
||||
public delegate bool AISwitchBoolHandler(IExplicitAI ai, IBattlePokemon pokemon, IBattle battle,
|
||||
IReadOnlyList<IBattlePokemon> reserves);
|
||||
|
||||
/// <summary>
|
||||
/// A function for returning the base power of a move.
|
||||
@@ -112,7 +112,7 @@ public interface IReadOnlyExplicitAIHandlers
|
||||
/// <summary>
|
||||
/// Indicates whether a Pokemon should switch into another Pokemon
|
||||
/// </summary>
|
||||
bool ShouldSwitch(IExplicitAI ai, IPokemon pokemon, IBattle battle, IReadOnlyList<IPokemon> reserves);
|
||||
bool ShouldSwitch(IExplicitAI ai, IBattlePokemon pokemon, IBattle battle, IReadOnlyList<IBattlePokemon> reserves);
|
||||
|
||||
/// <summary>
|
||||
/// Functions that indicate whether a Pokemon should NOT switch
|
||||
@@ -122,7 +122,8 @@ public interface IReadOnlyExplicitAIHandlers
|
||||
/// <summary>
|
||||
/// Indicates whether a Pokemon should NOT switch into another Pokemon
|
||||
/// </summary>
|
||||
bool ShouldNotSwitch(IExplicitAI ai, IPokemon pokemon, IBattle battle, IReadOnlyList<IPokemon> reserves);
|
||||
bool ShouldNotSwitch(IExplicitAI ai, IBattlePokemon pokemon, IBattle battle,
|
||||
IReadOnlyList<IBattlePokemon> reserves);
|
||||
|
||||
/// <summary>
|
||||
/// Scores abilities
|
||||
@@ -246,7 +247,8 @@ public class ExplicitAIHandlers : IReadOnlyExplicitAIHandlers
|
||||
ShouldSwitchFunctions;
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool ShouldSwitch(IExplicitAI ai, IPokemon pokemon, IBattle battle, IReadOnlyList<IPokemon> reserves)
|
||||
public bool ShouldSwitch(IExplicitAI ai, IBattlePokemon pokemon, IBattle battle,
|
||||
IReadOnlyList<IBattlePokemon> reserves)
|
||||
{
|
||||
var shouldSwitch = false;
|
||||
foreach (var (_, handler) in ShouldSwitchFunctions)
|
||||
@@ -272,7 +274,8 @@ public class ExplicitAIHandlers : IReadOnlyExplicitAIHandlers
|
||||
public FunctionHandlerDictionary<AIScoreMoveHandler> AbilityRanking = [];
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool ShouldNotSwitch(IExplicitAI ai, IPokemon pokemon, IBattle battle, IReadOnlyList<IPokemon> reserves)
|
||||
public bool ShouldNotSwitch(IExplicitAI ai, IBattlePokemon pokemon, IBattle battle,
|
||||
IReadOnlyList<IBattlePokemon> reserves)
|
||||
{
|
||||
var shouldNotSwitch = false;
|
||||
foreach (var (_, handler) in ShouldNotSwitchFunctions)
|
||||
|
||||
Reference in New Issue
Block a user