using System; using System.Collections.Generic; using System.Linq; using BehaviorLibrary.Components; using BehaviorLibrary.Components.Composites; using UnityEngine; namespace BehaviorLibrary { public enum BehaviorReturnCode { Failure, Success, Running } public delegate BehaviorReturnCode BehaviorReturn(); /// /// /// public class Behavior { private RootSelector _Root; private BehaviorReturnCode _ReturnCode; public BehaviorReturnCode ReturnCode { get { return _ReturnCode; } set { _ReturnCode = value; } } /// /// /// /// public Behavior(RootSelector root) { _Root = root; } /// /// perform the behavior /// public BehaviorReturnCode Behave() { try { switch (_Root.Behave()) { case BehaviorReturnCode.Failure: ReturnCode = BehaviorReturnCode.Failure; return ReturnCode; case BehaviorReturnCode.Success: ReturnCode = BehaviorReturnCode.Success; return ReturnCode; case BehaviorReturnCode.Running: ReturnCode = BehaviorReturnCode.Running; return ReturnCode; default: ReturnCode = BehaviorReturnCode.Running; return ReturnCode; } } catch (Exception e) { #if DEBUG Console.Error.WriteLine(e.ToString()); #endif ReturnCode = BehaviorReturnCode.Failure; return ReturnCode; } } } }