37 lines
1.5 KiB
C#
37 lines
1.5 KiB
C#
using PkmnLibSharp.FFI;
|
|
using PkmnLibSharp.Utils;
|
|
using Interface = PkmnLibSharp.FFI.DynamicData.Libraries.DynamicLibrary;
|
|
|
|
namespace PkmnLibSharp.DynamicData.Libraries
|
|
{
|
|
/// <summary>
|
|
/// The dynamic library stores a static data library, as well as holding different libraries and
|
|
/// calculators that might be customized between different generations and implementations.
|
|
/// </summary>
|
|
public class DynamicLibrary : HandleType
|
|
{
|
|
/// <inheritdoc cref="DynamicLibrary"/>
|
|
protected DynamicLibrary(FFIHandle handle) : base(handle)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Instantiates a new DynamicLibrary with given libraries.
|
|
/// </summary>
|
|
public static DynamicLibrary Create(StaticData.Libraries.StaticData staticData,
|
|
BattleStatCalculator statCalculator, DamageLibrary damageLibrary, MiscLibrary miscLibrary,
|
|
ScriptResolver scriptResolver)
|
|
{
|
|
var handle = Interface.dynamic_library_new(staticData.Handle, statCalculator.Handle, damageLibrary.Handle,
|
|
miscLibrary.Handle, scriptResolver.Handle);
|
|
var lib = Resolver.Instance.ResolveDynamicLibrary(handle.Resolve());
|
|
lib.StaticData = staticData;
|
|
return lib;
|
|
}
|
|
|
|
/// <summary>
|
|
/// The static data is the immutable storage data for this library.
|
|
/// </summary>
|
|
public StaticData.Libraries.StaticData StaticData { get; private set; } = null!;
|
|
}
|
|
} |