using System;
using Microsoft.Kinect;

namespace KinectUtils
{
    public abstract class BaseGesture
    {
        // Événement déclenché lorsque le geste est reconnu
        public event EventHandler GestureRecognized;

        // Nom du geste - marqué comme virtual pour permettre la substitution
        public virtual string GestureName { get; protected set; }

        // Méthode abstraite pour tester le geste
        public abstract void TestGesture(Body body);

        // Méthode protégée pour déclencher l'événement GestureRecognized
        protected virtual void OnGestureRecognized(Body body)
        {
            GestureRecognized?.Invoke(this, new GestureRecognizedEventArgs(body, GestureName));
        }
    }

    public class GestureRecognizedEventArgs : EventArgs
    {
        public Body Body { get; private set; }
        public string GestureName { get; private set; }

        public GestureRecognizedEventArgs(Body body, string gestureName)
        {
            Body = body;
            GestureName = gestureName;
        }
    }

}
