PkmnLibSharp/PkmnLibSharp/Library/Items/Item.cs

44 lines
1.5 KiB
C#
Raw Normal View History

2020-05-04 19:50:14 +00:00
using System;
using System.Linq;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library.Items
2020-05-04 19:50:14 +00:00
{
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);
2020-05-04 19:50:14 +00:00
public BattleItemCategory BattleCategory =>
(BattleItemCategory) Creatureliblibrary.Generated.Item.GetBattleCategory(Ptr);
2020-05-04 19:50:14 +00:00
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;
}
2020-05-04 19:50:14 +00:00
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(), (Pkmnlib.ItemCategory) category,
(Pkmnlib.BattleItemCategory) battleCategory, price, convertedFlags, (ulong) flags.Length, flingPower);
2020-05-04 19:50:14 +00:00
return new Item(p);
}
protected override void DeletePtr()
{
Pkmnlib.Generated.Item.Destruct(Ptr);
}
}
}