using System; using PkmnLibSharp.Utilities; namespace PkmnLibSharp.Library { public enum EffectParameterType : byte { None = 0, Bool = 1, Int = 2, Float = 3, String = 4, } public class EffectParameter : PointerWrapper { internal EffectParameter(IntPtr ptr) : base(ptr){} public EffectParameter(string s) : base(Creaturelib.Generated.EffectParameter.FromString(s.ToPtr())) { } public EffectParameter(bool b) : base(Creaturelib.Generated.EffectParameter.FromBool(b.ToNative())) { } public EffectParameter(long l) : base(Creaturelib.Generated.EffectParameter.FromInt(l)) { } public EffectParameter(float f) : base(Creaturelib.Generated.EffectParameter.FromFloat(f)) { } public EffectParameterType ParameterType => (EffectParameterType) Creaturelib.Generated.EffectParameter.GetType(Ptr); public bool AsBool() { byte b = 0; Creaturelib.Generated.EffectParameter.AsBool(Ptr, ref b).Assert(); return b == 1; } public long AsInt() { long i = 0; Creaturelib.Generated.EffectParameter.AsInt(Ptr, ref i).Assert(); return i; } public float AsFloat() { float f = 0; Creaturelib.Generated.EffectParameter.AsFloat(Ptr, ref f).Assert(); return f; } public string AsString() { var p = IntPtr.Zero; Creaturelib.Generated.EffectParameter.AsString(Ptr, ref p).Assert(); return p.PtrString()!; } protected override void DeletePtr() { Creaturelib.Generated.EffectParameter.Destruct(Ptr); } } }