@Override public boolean contains(GridPoint referencePoint, GridPoint targetPoint) { return this.relativeLocations.contains( new GridPoint( targetPoint.getColumn() - referencePoint.getColumn(), targetPoint.getRow() - referencePoint.getRow())); }
@Override public Set<GridPoint> getAllAffectedLocations(GridPoint referencePoint) { Set<GridPoint> results = new HashSet<GridPoint>(); for (GridPoint relativeLocation : this.relativeLocations) { int x = referencePoint.getColumn() + relativeLocation.getColumn(); int y = referencePoint.getRow() + relativeLocation.getRow(); if (this.grid.isInBounds(x, y)) { results.add(new GridPoint(x, y)); } } return results; }
/** * Returns the {@link VisualVertex} at the specified {@link GridPoint}. * * @param gridPoint the GridPoint of the VisualVertex to return * @return the VisualVertex at the specified GridPoint or <code>null</code> if the GridPoint is * empty */ public VisualVertex getVisualVertexAtGridPoint(GridPoint gridPoint) { // Early negative return if specified GridPoint is invalid if (!Validation.isValidGridPoint( gridPoint, this.horizontalGridPoints, this.verticalGridPoints)) { return null; } // Get VisualVertex at specified GridPoint VisualVertex visualVertex = this.grid[gridPoint.getPositionX()][gridPoint.getPositionY()]; return visualVertex; }
public GridPoint[] adjacentPoints(GridPoint point, boolean cornersCount) { GridPoint[] allPoints = point.adjacentPoints(cornersCount); GridPoint[] adjPoints = new GridPoint[allPoints.length]; int numInGrid = 0; for (int p = 0; p < allPoints.length; ++p) { if (this.contains(allPoints[p])) { adjPoints[numInGrid++] = allPoints[p]; } } return Arrays.copyOf(adjPoints, numInGrid); }
/** * Removes the {@link VisualVertex} from the specified {@link GridPoint} on the Grid. * * @param gridPoint The GridPoint from which the VisualVertex will be removed * @return <code>true</code> if a VisualVertex was removed from this GridPoint on the Grid, <code> * false</code> otherwise */ boolean removeVisualVertexAtGridPoint(GridPoint gridPoint) { // Early negative return if specified GridPoint is invalid if (!Validation.isValidGridPoint( gridPoint, this.horizontalGridPoints, this.verticalGridPoints)) { return false; } // Get VisualVertex at specified GridPoint VisualVertex visualVertex = this.grid[gridPoint.getPositionX()][gridPoint.getPositionY()]; // Return false if GridPoint is empty if (visualVertex == null) { return false; } // Remove VisualVertex this.grid[gridPoint.getPositionX()][gridPoint.getPositionY()] = null; return true; }