// 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); }
/// <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(); } } }
private void ExecuteCommand() { ExectuingCommand.Execute(transform, CurrentMovementController); }