using System.Collections.Generic; using System.Linq; using PkmnLibSharp.Utils; using Interface = PkmnLibSharp.FFI.StaticData.MoveData; namespace PkmnLibSharp.StaticData { public class SecondaryEffect : HandleType { protected SecondaryEffect(FFIHandle handle) : base(handle) { } public static SecondaryEffect Create(float chance, string effectName, IReadOnlyList parameters) { var parameterPtrs = parameters.Select(x => (FFIHandleValue)x.Handle).ToArray(); var parameterArrayPtr = parameterPtrs.ArrayPtr(); var handle = Interface.secondary_effect_new(chance, effectName.ToPtr(), parameterArrayPtr, (ulong)parameters.Count); var effect = Resolver.Instance.ResolveSecondaryEffect(handle.Resolve()); effect.Parameters = parameters; return effect; } private float? _chance; public float Chance => _chance ??= Interface.secondary_effect_chance(Handle); private string? _name; public string Name => _name ??= Interface.secondary_effect_effect_name(Handle).Result().PtrString()!; public IReadOnlyList Parameters { get; private set; } = null!; } }