using BehaviorDesigner.Runtime.Tasks; using BlueWater.Npcs.Crews; namespace BlueWater.BehaviorTrees.Actions { [TaskCategory("Custom/Npc/Crew/ServerCrew")] public class Serving : Conditional { private ServerCrew _serverCrew; public override void OnAwake() { _serverCrew = GetComponent(); } public override void OnStart() { _serverCrew.CrewInteraction = _serverCrew.OrderedCustomer; if (_serverCrew.CrewInteraction != null) { _serverCrew.AIMovement.Move(_serverCrew.CrewInteraction.CenterTransform.position); } } public override TaskStatus OnUpdate() { if (!_serverCrew.CrewInteraction.CanInteractionCrew()) { _serverCrew.AIMovement.StopMove(); _serverCrew.OrderedCustomer = null; _serverCrew.CrewInteraction = null; return TaskStatus.Failure; } if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running; _serverCrew.AIMovement.StopMove(); _serverCrew.CrewInteraction.InteractionCrew(_serverCrew); return TaskStatus.Success; } } }