using System.Collections.Generic;
using CleverCrow.Fluid.BTs.Trees;
using UnityEngine;
namespace CleverCrow.Fluid.BTs.Tasks {
    public interface ITask {
        /// 
        /// Used for debugging and identification purposes
        /// 
        string Name { get; set; }
        
        /// 
        /// Is this task enabled or not? Disabled tasks are excluded from the runtime
        /// 
        bool Enabled { get; set; }
        
        string IconPath { get; }
        /// 
        /// Reference to the behavior tree responsible for this node. Allows for dynamic variables such as adding a
        /// GameObject reference
        /// 
        GameObject Owner { get; set; }
        
        /// 
        /// Tree this node belongs to
        /// 
        IBehaviorTree ParentTree { get; set; }
        
        List Children { get; }
        /// 
        /// Last status returned by Update
        /// 
        TaskStatus LastStatus { get; }
        
        EditorRuntimeUtilities EditorUtils { get; }
        float IconPadding { get; }
        bool HasBeenActive { get; }
        /// 
        /// Triggered every tick
        /// 
        /// 
        TaskStatus Update ();
        /// 
        /// Forcibly end this task. Firing all necessary completion logic
        /// 
        void End ();
        /// 
        /// Reset this task back to its initial state to run again. Triggered after the behavior
        /// tree finishes with a task status other than continue.
        /// 
        void Reset ();
    }
}