using GameplayIngredients.StateMachines;
using UnityEngine;

namespace GameplayIngredients.Logic
{
    [AddComponentMenu(ComponentMenu.stateMachinePath + "State Logic")]
    [Callable("State Machines", "Logic/ic-generic-logic.png")]
    public class StateLogic : LogicBase
    {
        [NonNullCheck]
        public StateMachine StateMachine;
        [NonNullCheck]
        public State TargetState;

        public Callable[] IfCurrentState;
        public Callable[] IfNotCurrentState;

        public override void Execute(GameObject instigator = null)
        {
            if (StateMachine?.CurrentState == TargetState && IfCurrentState != null && IfCurrentState.Length > 0)
                Call(IfCurrentState, instigator);
            else if (StateMachine?.CurrentState != TargetState && IfNotCurrentState != null && IfNotCurrentState.Length > 0)
                Call(IfNotCurrentState, instigator);
        }

        public override string GetDefaultName()
        {
            return $"On State Machine '{StateMachine?.gameObject.name}' state: '{TargetState?.gameObject.name}'";
        }
    }
}