Esempio n. 1
0
 public void AgregarItemsACola()
 {
     Assert.AreEqual(0, _queueManager.Count());
     _queueManager.Add("Hola mundo");
     _queueManager.Add("Adios mundo");
     Assert.AreEqual(2, _queueManager.Count());
 }
Esempio n. 2
0
    // Start is called before the first frame update
    void Start()
    {
        transform.parent = null;
        // refreshTargets += UpdateTarget;
        queueManager = GameObject.FindGameObjectWithTag("DriveThruWindow").GetComponent <QueueManager>();
        index        = queueManager.Add(this);

        agent = GetComponent <NavMeshAgent>();
        if (!window)
        {
            window = GameObject.FindGameObjectWithTag("DriveThruWindow").transform;
        }
        if (!exit)
        {
            exit = GameObject.FindGameObjectWithTag("CarExit").transform;
        }

        stateMachine = new StateMachine();
        stateMachine.AddState(new StateMachine.State()
        {
            Name    = "Entered",
            OnEnter = () =>
            {
                if (queueManager.Count() > 1)
                {
                    target = queueManager.Next();
                    setDestination(target.transform);
                    targetTransform        = target.transform;
                    agent.stoppingDistance = 5;
                }
                else
                {
                    setDestination(window);
                    targetTransform        = window;
                    agent.stoppingDistance = 3;
                }
            },
            OnStay = () =>
            {
                setDestination(targetTransform);
            },
            OnExit = () =>
            {
            }
        });
        stateMachine.AddState(new StateMachine.State()
        {
            Name    = "Service",
            OnEnter = () =>
            {
                agent.isStopped = true;
            },
            OnStay = () =>
            {
            },
            OnExit = () =>
            {
            }
        });
        stateMachine.AddState(new StateMachine.State()
        {
            Name    = "Exit",
            OnEnter = () =>
            {
                agent.isStopped = false;
                Debug.Log("Setting to exit");
                setDestination(exit);
                agent.stoppingDistance = 3;
                queueManager.PopFirst();
                refreshTargets?.Invoke();
            },
            OnStay = () =>
            {
                setDestination(exit);
                agent.stoppingDistance = 3;
            },
            OnExit = () =>
            {
            }
        });
        stateMachine.TransitionTo("Entered");
    }