34 lines
1.3 KiB
C#
34 lines
1.3 KiB
C#
using PkmnLibSharp.FFI;
|
|
using PkmnLibSharp.Utils;
|
|
using Interface = PkmnLibSharp.FFI.DynamicData.Libraries.DynamicLibrary;
|
|
|
|
namespace PkmnLibSharp.DynamicData.Libraries
|
|
{
|
|
public class DynamicLibrary : ExternPointer<DynamicLibrary.CacheData>
|
|
{
|
|
public class CacheData
|
|
{
|
|
public StaticData.Libraries.StaticData? StaticData { get; internal set; }
|
|
}
|
|
|
|
internal DynamicLibrary(IdentifiablePointer ptr) : base(ptr, false)
|
|
{
|
|
}
|
|
|
|
public DynamicLibrary(StaticData.Libraries.StaticData staticData, BattleStatCalculator statCalculator,
|
|
DamageLibrary damageLibrary, MiscLibrary miscLibrary, ScriptResolver scriptResolver) : base(
|
|
Interface.dynamic_library_new(staticData.TakeOwnershipAndInvalidate(),
|
|
statCalculator.TakeOwnershipAndInvalidate(), damageLibrary.TakeOwnershipAndInvalidate(),
|
|
miscLibrary.TakeOwnershipAndInvalidate(), scriptResolver.TakeOwnershipAndInvalidate()), true)
|
|
{
|
|
}
|
|
|
|
public StaticData.Libraries.StaticData StaticData =>
|
|
Cache.StaticData ??=
|
|
new StaticData.Libraries.StaticData(Interface.dynamic_library_get_static_data(Ptr), false);
|
|
|
|
|
|
protected override CacheData CreateCache() => new();
|
|
protected override void Destructor() => Interface.dynamic_library_drop(Ptr);
|
|
}
|
|
} |