public void OnLeftClick() { if (IsMouseOver()) { bool hasSelectedRoot = ((ChessGameScene)ChessGame.Instance.CurrentScene).HasSelectedRootNode; if (!hasSelectedRoot) { if (PieceInThisPosition != null && PieceInThisPosition.IsCorrectTurn()) { if (PieceInThisPosition.GetPossibleMoves().Count > 0) { NotationBuilder = new StringBuilder(); IsSelected = true; ((ChessGameScene)ChessGame.Instance.CurrentScene).HasSelectedRootNode = true; ((ChessGameScene)ChessGame.Instance.CurrentScene).RootNode = this; List <Vector2D> possibleMoves = PieceInThisPosition.GetPossibleMoves(); List <ChessBoardSprite> possibleMovesSprites = new List <ChessBoardSprite>(); foreach (Vector2D move in possibleMoves) { if (PieceInThisPosition.IsValidMove(move) && MovementValidation.IsPathNotObstructed(PieceInThisPosition.BoardPosition, move)) { possibleMovesSprites.Add(GetBoardPieceByCoord(move.ToCoordinate())); } } //possibleMoves.ForEach(m => possibleMovesSprites.Add(GetBoardPieceByCoord(m.ToCoordinate()))); possibleMovesSprites.ForEach(m => m.MarkAsValidPosition()); NotationBuilder.Append(BoardPosition.ToCoordinate() + " "); } else { Notifications.Notify("That piece has no possible moves."); } } } else { List <ChessBoardSprite> allChessBoardPieces = GetAllChessBoardPieces(); ChessBoardSprite movingPosition = ((ChessGameScene)ChessGame.Instance.CurrentScene).RootNode; ChessPiece movingPiece = movingPosition.PieceInThisPosition; if (movingPiece.IsValidMove(BoardPosition)) { NotationBuilder.Append(BoardPosition.ToCoordinate()); if (PieceInThisPosition != null) { NotationBuilder.Append("*"); } Console.WriteLine("Command: [" + NotationBuilder.ToString() + "]"); NotationParser.ParseString(NotationBuilder.ToString()); UpdateChessPieceTexture(); movingPosition.UpdateChessPieceTexture(); OnRightClick(); } } } }
public ChessBoardSprite GetBoardPieceByCoord(string coord) { ChessBoardSprite foundSprite = null; List <ChessBoardSprite> allSprites = GetAllChessBoardPieces(); foreach (ChessBoardSprite c in allSprites) { if (c.BoardPosition.ToCoordinate() == coord) { foundSprite = c; break; } } return(foundSprite); }
public void MovePiece(ChessBoardSprite movingTo) { UpdateChessPieceTexture(); }