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)); }
/// <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)); }