PkmnLibRSharp/PkmnLibRSharp/DynamicData/Libraries/DynamicLibrary.cs

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!;
}
}