PkmnLibSharp/PkmnLibSharp/Library/Items/Item.cs

53 lines
2.0 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 battleTriggerEffectName, EffectParameter[] battleTriggerParameters,
string[] flags, byte flingPower)
{
var convertedFlags = flags.Select(x => x.ToPtr()).ToArray().ArrayPtr();
var pars = parameters.Select(x => x.Ptr).ToArray().ArrayPtr();
var battlePars = battleTriggerParameters.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,
battleTriggerEffectName.ToPtr(), battlePars, (ulong)battleTriggerParameters.Length, convertedFlags,
(ulong)flags.Length, flingPower);
Initialize(p);
}
internal Item(IntPtr p) : base(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);
}
}
}