public void ChangePosition(Piece piece, ChessPoint newPosition) { if (ReferenceEquals(piece, null)) { throw new ArgumentNullException(nameof(piece)); } if (ReferenceEquals(newPosition, null)) { throw new ArgumentNullException(nameof(newPosition)); } var oldCoordinates = new MappedCoordinates(piece.Coordinate); var newCoordinates = new MappedCoordinates(newPosition); if (!ReferenceEquals(_map[newCoordinates.X][newCoordinates.Y], null)) { throw new BusyCellException("Can't change piece position: the cell with coodinates " + $"{newPosition.Letter}{newPosition.Number} ({newCoordinates.X}, {newCoordinates.Y}) is busy."); } _map[newCoordinates.X][newCoordinates.Y] = piece; _map[oldCoordinates.X][oldCoordinates.Y] = null; piece.Coordinate.Letter = newPosition.Letter; piece.Coordinate.Number = newPosition.Number; }
public void RemovePiece(Piece piece) { if (ReferenceEquals(piece, null)) { throw new ArgumentNullException(nameof(piece)); } var coordinates = new MappedCoordinates(piece.Coordinate); _map[coordinates.X][coordinates.Y] = null; }
public void AddPiece(Piece piece) { if (ReferenceEquals(piece, null)) { throw new ArgumentNullException(nameof(piece)); } var coordinates = new MappedCoordinates(piece.Coordinate); if (!ReferenceEquals(_map[coordinates.X][coordinates.Y], null)) { throw new BusyCellException("Can't add piece to piecemap: the cell with coodinates " + $"{piece.Coordinate.Letter}{piece.Coordinate.Number} ({coordinates.X}, {coordinates.Y}) is busy."); } _map[coordinates.X][coordinates.Y] = piece; }
public Piece GetPiece(ChessPoint cell) { var mapCoordinates = new MappedCoordinates(cell); return(_map[mapCoordinates.X][mapCoordinates.Y]); }