// Update is called once per frame
 void Update()
 {
     command.Execute();
     if (Input.GetKeyDown(KeyCode.P) || Input.GetKeyDown(KeyCode.JoystickButton5))
     {
         if (currentPlayer == player1)
         {
             player2.GetComponent <Player>().movementObject = player1.GetComponent <Player>().movementObject;
             player1.GetComponent <Player>().Indicator.SetActive(false);
             player1.GetComponent <Rigidbody2D>().velocity = new Vector2(0, player1.GetComponent <Rigidbody2D>().velocity.y);
             currentPlayer = player2;
             player1.GetComponent <Player>().movementObject = new IdleMovement();
         }
         else if (currentPlayer == player2)
         {
             player1.GetComponent <Player>().movementObject = player2.GetComponent <Player>().movementObject;
             player2.GetComponent <Player>().Indicator.SetActive(false);
             player2.GetComponent <Rigidbody2D>().velocity = new Vector2(0, player2.GetComponent <Rigidbody2D>().velocity.y);
             currentPlayer = player1;
             player2.GetComponent <Player>().movementObject = new IdleMovement();
         }
         currentPlayer.GetComponent <Player>().Indicator.SetActive(true);
         command.ChangeReciever(currentPlayer.GetComponent <Player>());
     }
 }
        public void SetRecieverAndExecuteShouldMakeRoverMove(IList <Movement> expected, [Frozen] Mock <IRover> rover)
        {
            var sut = new MovementCommand(expected);

            sut.SetReceiver(rover.Object);
            sut.Execute();

            rover.Verify(p => p.Move(expected), Times.Once);
        }
Beispiel #3
0
    /// <summary>
    /// Hace que el personaje ejecute uno a uno los comandos en la
    /// cola de comandos. Un comando solo es ejecutado luego de que
    /// pase un tiempo menor o igual a "TiempoEntreMovimientos", por
    /// lo que se espera que el tiempo entre cada comando sea el
    /// ajustado en dicha variable.
    /// </summary>
    public void RealizarComandos()
    {
        // Se captura el tiempo actual
        // para calculos futuros
        float tiempoAct = Time.time;

        if (!_FinalizoElJuego && _TiempoProximoCom <= tiempoAct && _ComandosAEjecutar.Count > 0)
        {
            MovementCommand comandoAEjecutar = _ComandosAEjecutar.Peek();

            if (_DebeRevertir)
            {
                // Se deshace el último comando y además
                // Se remueve el objeto que deshace los
                // comandos del jugador.
                BoardManag.RemoverObjDeshacer();
                comandoAEjecutar.Undo(this);
                _DebeRevertir = false;

                // Una vez revertido el comando, se remueve
                // de la lista.
                _ = _ComandosAEjecutar.Dequeue();
            }
            else
            {
                comandoAEjecutar.Execute(this);

                // Si al ejecutar el comando, se activo la bandera, el comando no debe
                // removerse de la cola de comandos.
                if (!_DebeRevertir)
                {
                    // Se remueve el comando solo cuando este ya fue ejecutado
                    _ = _ComandosAEjecutar.Dequeue();
                }
            }

            // Si se ejecuto el comando y se levanto la bandera que debe revertir
            // Es necesario ajustar los tiempos para mostrar al jugador que su
            // comando se deshizo y que la luna ya no está en el tablero.
            if (_DebeRevertir)
            {
                _TiempoProximoCom = tiempoAct + (TiempoEntreMovimientos / 2);
            }
            else
            {
                _TiempoProximoCom = tiempoAct + TiempoEntreMovimientos;
            }
        }
    }
    void Update()
    {
        if (!Input.GetKey(KeyCode.LeftShift))
        {
            Vector2         movement = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")).normalized;
            MovementCommand command  = new MovementCommand(receiver, movement * receiver.Speed * Time.deltaTime);
            command.Execute();

            commands.Push(command);
        }
        else
        {
            if (commands.Count > 0)
            {
                commands.Pop()?.Undo();
            }
        }
    }
Beispiel #5
0
 private void ExecuteCommand()
 {
     ExectuingCommand.Execute(transform, CurrentMovementController);
 }