53 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
} |