33 lines
1.2 KiB
C#
33 lines
1.2 KiB
C#
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<EffectParameter> 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<EffectParameter> Parameters { get; private set; } = null!;
|
|
}
|
|
} |