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); } 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); } } }