using UnityEngine;

namespace ImpactCFX.VFXBatch
{
    [CreateAssetMenu(fileName = "New Impact VFX Batch Effect", menuName = "Impact CFX/VFX Batch Effect", order = 2)]
    public class ImpactVFXBatchEffectAuthoring : ImpactEffectAuthoringBase
    {
        [Tooltip("The Visual Effect to use.")]
        [SerializeField]
        private ImpactVFXBatchMaster visualEffectPrefab;
        [Tooltip("Whether the particles are one-shot or looping.")]
        [SerializeField]
        private ParticleEffectType visualEffectType;

        [Tooltip("The minimum velocity required to emit particles.")]
        [SerializeField]
        private float minimumVelocity = 2;
        [Tooltip("How much the normal should affect the collision intensity.")]
        [SerializeField]
        private float collisionNormalInfluence = 1;

        [Tooltip("Should particles be emitted when sliding? Only available for Looping effects.")]
        [SerializeField]
        private bool emitOnSlide;
        [Tooltip("Should particles be emitted when rolling? Only available for Looping effects.")]
        [SerializeField]
        private bool emitOnRoll;

        public ImpactVFXBatchMaster VisualEffectPrefab => visualEffectPrefab;

        public bool Validate()
        {
            return visualEffectPrefab != null;
        }

        public VFXBatchEffect GetVFXBatchEffect()
        {
            return new VFXBatchEffect()
            {
                EffectID = GetID(),
                MinimumVelocity = this.minimumVelocity,
                CollisionNormalInfluence = this.collisionNormalInfluence,
                VisualEffectType = this.visualEffectType,
                EmitOnSlide = visualEffectType == ParticleEffectType.Looped && this.emitOnSlide,
                EmitOnRoll = visualEffectType == ParticleEffectType.Looped && this.emitOnRoll
            };
        }
    }
}