Esempio n. 1
0
        public void ConfusedPlayerMoveTest()
        {
            var confusedPlayer    = new ConfusedPlayer(level, level.CurrentPlayer);
            var startPosition     = confusedPlayer.Position;
            var possiblePositions = new[]
            {
                new Position(startPosition.Y, startPosition.X),
                new Position(startPosition.Y, startPosition.X + 1),
                new Position(startPosition.Y + 1, startPosition.X)
            };

            confusedPlayer.Move(1, 0, level.Board);
            var endPosition = confusedPlayer.Position;

            Assert.IsTrue(possiblePositions.Contains(endPosition));
        }
Esempio n. 2
0
        /// <summary>
        /// Notifies a player about the move intent.
        /// Notifies the view.
        /// </summary>
        public virtual void IntentMove(Character character, int deltaY, int deltaX)
        {
            var player = character as AbstractPlayer;

            var oldPosition = player.Position;

            if (player is ConfusedPlayer confusedPlayer)
            {
                var confusedPosition = ConfusedPlayer.ConfuseIntent(new Position(deltaY, deltaX));
                deltaY = confusedPosition.Y;
                deltaX = confusedPosition.X;
            }

            character.MoveStraightforward(deltaY, deltaX, level.Board);

            playView.UpdatePlayer(level, oldPosition, player.Position);
            playView.UpdatePosition(level, oldPosition + new Position(deltaY, deltaX));

            listener?.MovePlayer(player, new Position(deltaY, deltaX));
        }