public override async Task ExecuteAsync(int toRoomId) { var context = new ShootContext(); int roomId = Player.GetActualRoomId(); context.SetActualRoom(await Board.GetRoomAsync(roomId)); await FillAdjustedRoomsAsync(roomId, context); if (roomId == toRoomId) { _presenter.PresentActualRoom(context); } else if (!Board.HasRoomConnection(roomId, toRoomId)) { _presenter.PresentNoConnection(context); } else if (!Player.HasAmmunition()) { _presenter.PresentNoAmmunition(); } else { Player.Shoot(); context.SetShootRoom(await Board.GetRoomAsync(toRoomId)); context.SetShotWhumpus(_whumpus.GetActualRoomId() == toRoomId); _presenter.Present(context); } var shootToRoom = await Board.GetRoomAsync(toRoomId); context.SetShootRoom(shootToRoom); }
public void PlayerActualRoomChange_SuccessfullyChange() { _whumpus.GetActualRoomId().Should().Be(1); _whumpus.SetActualRoom(2); _whumpus.GetActualRoomId().Should().Be(2); }