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