From 6c0d3206563e8a1316909c67e2fa61894d996ffb Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Mon, 4 May 2020 21:50:14 +0200 Subject: [PATCH] Item Wrapper --- PkmnLibSharp/Library/Item.cs | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 PkmnLibSharp/Library/Item.cs diff --git a/PkmnLibSharp/Library/Item.cs b/PkmnLibSharp/Library/Item.cs new file mode 100644 index 0000000..2a92ab8 --- /dev/null +++ b/PkmnLibSharp/Library/Item.cs @@ -0,0 +1,44 @@ +using System; +using System.Linq; +using PkmnLibSharp.Utilities; +using BattleItemCategory = Pkmnlib.BattleItemCategory; +using ItemCategory = Pkmnlib.ItemCategory; + +namespace PkmnLibSharp.Library +{ + public class Item : PointerWrapper + { + private string _name; + + public string Name => _name ??= Creatureliblibrary.Generated.Item.GetName(Ptr).PtrString(); + public ItemCategory Category => (ItemCategory) Creatureliblibrary.Generated.Item.GetCategory(Ptr); + public BattleItemCategory BattleCategory => + (BattleItemCategory) Creatureliblibrary.Generated.Item.GetBattleCategory(Ptr); + public int Price => Creatureliblibrary.Generated.Item.GetPrice(Ptr); + public byte FlingPower => Pkmnlib.Generated.Item.GetFlingPower(Ptr); + + public bool HasFlag(string s) + { + return Creatureliblibrary.Generated.Item.HasFlag(Ptr, s.ToPtr()) == MarshalHelper.True; + } + + internal Item(IntPtr ptr) : base(ptr) + { + } + + public static Item Create(string name, ItemCategory category, BattleItemCategory battleCategory, + int price, + string[] flags, byte flingPower) + { + var convertedFlags = flags.Select(x => x.ToPtr()).ToArray().ArrayPtr(); + var p = Pkmnlib.Generated.Item.Construct(name.ToPtr(), category, battleCategory, price, convertedFlags, + (ulong) flags.Length, flingPower); + return new Item(p); + } + + protected override void DeletePtr() + { + Pkmnlib.Generated.Item.Destruct(Ptr); + } + } +} \ No newline at end of file