private void findNext() { while (iterator.hasNext()) { T curr = iterator.next(); if (predicate.evaluate(curr)) { this.next = curr; break; } } }
@Override public EDirection getDirectionOfSearched(ShortPoint2D position, ESearchType searchType) { IPredicate<ELandscapeType> predicate; if (searchType == ESearchType.FISHABLE) { predicate = ELandscapeType::isWater; } else if (searchType == ESearchType.RIVER) { predicate = ELandscapeType::isRiver; } else { return null; } for (EDirection direction : EDirection.VALUES) { int x = direction.getNextTileX(position.x); int y = direction.getNextTileY(position.y); if (isInBounds(x, y) && predicate.evaluate(landscapeGrid.getLandscapeTypeAt(x, y))) { return direction; } } return null; }