private void PerformMove(Tile tile) { var chessPieceToMove = m_selectedTile.GetChessPiece(); var previousChessPieceOnNewTile = tile.GetChessPiece(); m_selectedTile.SetChessPiece(null); //Convert pawn to queen if it got through if (chessPieceToMove.GetChessPieceType() == ChessPieceType.Pawn /*TODO*/) { tile.SetChessPiece(chessPieceToMove); } else { tile.SetChessPiece(chessPieceToMove); } var moveInformation = new Move(new BoardPosition(m_selectedTile.GetBoardPosition().X, m_selectedTile.GetBoardPosition().Y), new BoardPosition(tile.GetBoardPosition().X, tile.GetBoardPosition().Y)); if (!m_validSpecialMove.Equals(SpecialMove.None)) { CheckForSpecialMove(moveInformation); } chessPieceToMove.Move(moveInformation); if (previousChessPieceOnNewTile != null) { if (previousChessPieceOnNewTile.GetColor().Equals(ChessColor.Black)) { m_blackGraveyard.AddDeadChessPieces(previousChessPieceOnNewTile); } else { m_whiteGraveyard.AddDeadChessPieces(previousChessPieceOnNewTile); } } if (m_activeColor.Equals(ChessColor.White)) { m_whiteHistory.AddMove(moveInformation); m_activeColor = ChessColor.Black; } else { m_blackHistory.AddMove(moveInformation); m_activeColor = ChessColor.White; } }