Use PCGRandom instead of System.Random, documentation
This commit is contained in:
parent
7c0bd879b8
commit
5d6149b18b
|
@ -1,6 +1,14 @@
|
|||
global using LevelInt = byte;
|
||||
|
||||
namespace PkmnLib.Dynamic;
|
||||
|
||||
/// <summary>
|
||||
/// Constants used in the dynamic library.
|
||||
/// </summary>
|
||||
public class Const
|
||||
{
|
||||
/// <summary>
|
||||
/// The max number of moves a Pokemon can have.
|
||||
/// </summary>
|
||||
public const int MovesCount = 4;
|
||||
}
|
|
@ -33,8 +33,13 @@ public interface IDynamicLibrary
|
|||
IMiscLibrary MiscLibrary { get; }
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public class DynamicLibraryImpl : IDynamicLibrary
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DynamicLibraryImpl"/> class, with the given
|
||||
/// plugins and static library.
|
||||
/// </summary>
|
||||
public static IDynamicLibrary Create(IStaticLibrary staticLibrary, IEnumerable<Plugin> plugins)
|
||||
{
|
||||
var registry = new ScriptRegistry();
|
||||
|
|
|
@ -4,6 +4,9 @@ using PkmnLib.Static;
|
|||
|
||||
namespace PkmnLib.Dynamic.Libraries;
|
||||
|
||||
/// <summary>
|
||||
/// Miscellaneous handlings for battles.
|
||||
/// </summary>
|
||||
public interface IMiscLibrary
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -1,8 +1,22 @@
|
|||
namespace PkmnLib.Dynamic.Models;
|
||||
|
||||
/// <summary>
|
||||
/// A battle party is a wrapper around a Pokemon party that provides additional functionality for battles.
|
||||
/// It indicates for which side and position the party is responsible.
|
||||
/// </summary>
|
||||
public interface IBattleParty
|
||||
{
|
||||
/// <summary>
|
||||
/// The backing Pokemon party.
|
||||
/// </summary>
|
||||
IPokemonParty Party { get; }
|
||||
/// <summary>
|
||||
/// Whether the party is responsible for the specified side and position.
|
||||
/// </summary>
|
||||
bool IsResponsibleForIndex(byte side, byte position);
|
||||
|
||||
/// <summary>
|
||||
/// Whether the party has a living Pokemon left that is not in the field.
|
||||
/// </summary>
|
||||
bool HasPokemonNotInField();
|
||||
}
|
|
@ -2,6 +2,9 @@ using PkmnLib.Static.Utils;
|
|||
|
||||
namespace PkmnLib.Dynamic.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Random number generator for battles.
|
||||
/// </summary>
|
||||
public interface IBattleRandom : IRandom
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentResults" Version="3.16.0" />
|
||||
<PackageReference Include="PcgRandom" Version="1.2.0" />
|
||||
<PackageReference Include="PolySharp" Version="1.14.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
using Pcg;
|
||||
|
||||
namespace PkmnLib.Static.Utils;
|
||||
|
||||
/// <summary>
|
||||
|
@ -49,30 +51,30 @@ public interface IRandom
|
|||
/// <inheritdoc />
|
||||
public class RandomImpl : IRandom
|
||||
{
|
||||
private readonly Random _random;
|
||||
private readonly PcgRandom _random;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance that uses the given <see cref="Random"/> instance as its source of randomness.
|
||||
/// Creates a new instance that uses the given <see cref="PcgRandom"/> instance as its source of randomness.
|
||||
/// </summary>
|
||||
public RandomImpl(Random random)
|
||||
public RandomImpl(PcgRandom random)
|
||||
{
|
||||
_random = random;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance that uses the given seed to create a new <see cref="Random"/> instance.
|
||||
/// Creates a new instance that uses the given seed to create a new <see cref="PcgRandom"/> instance.
|
||||
/// </summary>
|
||||
public RandomImpl(int seed)
|
||||
{
|
||||
_random = new Random(seed);
|
||||
_random = new PcgRandom(seed);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance that uses a new <see cref="Random"/> instance.
|
||||
/// Creates a new instance that uses a new <see cref="PcgRandom"/> instance.
|
||||
/// </summary>
|
||||
public RandomImpl()
|
||||
{
|
||||
_random = new Random();
|
||||
_random = new PcgRandom();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
Loading…
Reference in New Issue