Add randomSeed parameter to BattleImpl, fix flaky test

This commit is contained in:
Deukhoofd 2024-12-27 15:07:20 +01:00
parent 853d6dd1cb
commit 78114afd80
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
3 changed files with 11 additions and 3 deletions

View File

@ -123,7 +123,7 @@ public class BattleImpl : ScriptSource, IBattle
{
/// <inheritdoc cref="BattleImpl"/>
public BattleImpl(IDynamicLibrary library, IReadOnlyList<IBattleParty> parties, bool canFlee, byte numberOfSides,
byte positionsPerSide)
byte positionsPerSide, int? randomSeed = null)
{
Library = library;
Parties = parties;
@ -134,7 +134,7 @@ public class BattleImpl : ScriptSource, IBattle
for (byte i = 0; i < numberOfSides; i++)
sides[i] = new BattleSideImpl(i, positionsPerSide, this);
Sides = sides;
Random = new BattleRandomImpl();
Random = randomSeed.HasValue ? new BattleRandomImpl(randomSeed.Value) : new BattleRandomImpl();
EventHook = new EventHook();
}

View File

@ -19,6 +19,14 @@ public interface IBattleRandom : IRandom
/// <inheritdoc cref="IBattleRandom"/>
public class BattleRandomImpl : RandomImpl, IBattleRandom
{
public BattleRandomImpl()
{
}
public BattleRandomImpl(int seed) : base(seed)
{
}
/// <inheritdoc />
public bool EffectChance(float chance, IExecutingMove executingMove, IPokemon target, byte hitNumber)
{

View File

@ -54,7 +54,7 @@ public class IntegrationTestRunner
return new BattlePartyImpl(party, x.Indices.Select(y => new ResponsibleIndex(y[0], y[1])).ToArray());
}).ProcessOneAtATime().GetResultsAsync();
var battle = new BattleImpl(library, parties, test.BattleSetup.CanFlee, test.BattleSetup.NumberOfSides,
test.BattleSetup.PositionsPerSide);
test.BattleSetup.PositionsPerSide, randomSeed: test.BattleSetup.Seed);
foreach (var action in test.Actions)
{