AI/ActionSystem/BehaviorTree/Nodes/QueueNode.cs
namespace HC3;
/// <summary>
/// A node that handles queuing a guest for a ride.
/// </summary>
public class QueueNode : Node
{
private readonly BasicRide Ride;
private readonly Guest Guest;
private bool _queued;
public QueueNode( BasicRide ride, Guest guest )
{
Ride = ride;
Guest = guest;
}
public override Status Tick()
{
if ( !Ride.IsValid() || !Guest.IsValid() )
return Status.Failure;
if ( Ride.CanEnter( Guest ) )
{
if ( _queued )
Ride.RemoveFromQueue( Guest );
return Status.Success;
}
if ( !_queued && Ride.AddToQueue( Guest ) )
{
_queued = true;
}
return Status.Running;
}
public override ActionDisplayInfo? GetDisplay()
{
return new ActionDisplayInfo( "watch", $"Waiting for {Ride.Title}", 0 );
}
}