Esempio n. 1
0
        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);
 }