PkmnLibRSharp/PkmnLibRSharp/StaticData/Libraries/AbilityLibrary.cs

47 lines
1.4 KiB
C#
Raw Normal View History

2022-10-01 13:39:33 +00:00
using System;
2022-10-08 11:42:30 +00:00
using PkmnLibSharp.FFI;
2022-10-01 13:39:33 +00:00
using PkmnLibSharp.Utils;
using Interface = PkmnLibSharp.FFI.StaticData.Libraries.AbilityLibrary;
2022-10-01 13:39:33 +00:00
namespace PkmnLibSharp.StaticData.Libraries
{
public class AbilityLibrary : DataLibrary<Ability>
{
public AbilityLibrary(ulong capacity) : base(Interface.ability_library_new(capacity), true)
2022-10-01 13:39:33 +00:00
{
}
2022-10-08 11:42:30 +00:00
internal AbilityLibrary(IdentifiablePointer ptr, bool isOwner) : base(ptr, isOwner)
2022-10-01 13:39:33 +00:00
{
}
protected override void Destructor() => Interface.ability_library_drop(Ptr);
2022-10-01 13:39:33 +00:00
public override void Add(string key, Ability value) =>
Interface.ability_library_add(Ptr, key.ToPtr(), value.TakeOwnershipAndInvalidate());
2022-10-01 13:39:33 +00:00
public override int Count => (int)Interface.ability_library_len(Ptr);
2022-10-01 13:39:33 +00:00
protected override Ability? GetValueByKey(string key)
{
var ptr = Interface.ability_library_get(Ptr, key.ToPtr());
return ptr.Ptr == IntPtr.Zero ? null : new Ability(ptr);
2022-10-01 13:39:33 +00:00
}
public override string? GetKeyByIndex(ulong index) =>
Interface.ability_library_get_key_by_index(Ptr, index).PtrString();
2022-10-01 13:39:33 +00:00
public override void InvalidateChildren()
{
foreach (var value in Cache.ValueCache.Values)
{
value.Invalidate();
}
}
2022-10-08 11:42:30 +00:00
~AbilityLibrary()
{
Dispose();
}
2022-10-01 13:39:33 +00:00
}
}