46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using System;
|
|
using System.Linq;
|
|
using PkmnLibSharp.Utilities;
|
|
|
|
namespace PkmnLibSharp.Library.Items
|
|
{
|
|
public class Item : PointerWrapper
|
|
{
|
|
private string? _name;
|
|
|
|
public Item(string name, ItemCategory category, BattleItemCategory battleCategory, int price, string effectName,
|
|
EffectParameter[] parameters, string[] flags, byte flingPower)
|
|
{
|
|
var convertedFlags = flags.Select(x => x.ToPtr()).ToArray().ArrayPtr();
|
|
var pars = parameters.Select(x => x.Ptr).ToArray().ArrayPtr();
|
|
var p = Pkmnlib.Generated.Item.Construct(name.ToPtr(), (Pkmnlib.ItemCategory) category,
|
|
(Pkmnlib.BattleItemCategory) battleCategory, price, effectName.ToPtr(), pars, (ulong) parameters.Length,
|
|
convertedFlags, (ulong) flags.Length, flingPower);
|
|
Initialize(p);
|
|
}
|
|
|
|
public string Name => _name ??= Creaturelib.Generated.Item.GetName(Ptr).PtrString()!;
|
|
public ItemCategory Category => (ItemCategory) Creaturelib.Generated.Item.GetCategory(Ptr);
|
|
|
|
public BattleItemCategory BattleCategory =>
|
|
(BattleItemCategory) Creaturelib.Generated.Item.GetBattleCategory(Ptr);
|
|
|
|
public int Price => Creaturelib.Generated.Item.GetPrice(Ptr);
|
|
public byte FlingPower => Pkmnlib.Generated.Item.GetFlingPower(Ptr);
|
|
|
|
public bool HasFlag(string s)
|
|
{
|
|
return Creaturelib.Generated.Item.HasFlag(Ptr, s.ToPtr()) == MarshalHelper.True;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return base.ToString() + $": {Name}";
|
|
}
|
|
|
|
protected override void DeletePtr()
|
|
{
|
|
Pkmnlib.Generated.Item.Destruct(Ptr);
|
|
}
|
|
}
|
|
} |