From 7f21cb1ad7379087d7f3d7d1df0952aa6100889e Mon Sep 17 00:00:00 2001 From: Clemens Klug Date: Thu, 4 May 2017 13:32:49 +0200 Subject: [PATCH] replace streams --- .../games/fillgrid/GroupGridPainter.java | 4 ++- .../games/fillgrid/SpawnPainterGroup.java | 12 +++++--- .../games/fillgrid/data/GridBoard.java | 28 +++++++++++++------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/agp8x/android/games/fillgrid/GroupGridPainter.java b/app/src/main/java/org/agp8x/android/games/fillgrid/GroupGridPainter.java index 389a638..5dced1e 100644 --- a/app/src/main/java/org/agp8x/android/games/fillgrid/GroupGridPainter.java +++ b/app/src/main/java/org/agp8x/android/games/fillgrid/GroupGridPainter.java @@ -27,7 +27,9 @@ public class GroupGridPainter implements GridPainter { @Override public void draw(Canvas canvas, Map cells, Pair realDimensions) { - cells.forEach((offset, groupCell) -> drawCell(canvas, offset, groupCell, realDimensions)); + for (Map.Entry entry : cells.entrySet()) { + drawCell(canvas, entry.getKey(),entry.getValue(), realDimensions); + } } private void drawCell(Canvas canvas, Offset offset, C cell, Pair realDimensions) { diff --git a/app/src/main/java/org/agp8x/android/games/fillgrid/SpawnPainterGroup.java b/app/src/main/java/org/agp8x/android/games/fillgrid/SpawnPainterGroup.java index d89a120..8c4eb48 100644 --- a/app/src/main/java/org/agp8x/android/games/fillgrid/SpawnPainterGroup.java +++ b/app/src/main/java/org/agp8x/android/games/fillgrid/SpawnPainterGroup.java @@ -41,18 +41,20 @@ public class SpawnPainterGroup, C extends GroupCell> imp } //spawnGrid.forEach((offset, groupCellGridBlock) -> drawBlock(canvas, groupCellGridBlock)); for (Offset offset : spawnGrid.keySet()) { - drawBlock(canvas,spawnGrid.get(offset)); + drawBlock(canvas, spawnGrid.get(offset)); } return positions; } @Override public void drawDragging(Canvas canvas, Pair xy, G object) { - object.getObjects().forEach((offset, c) -> drawCellDragging(canvas, xy, offset, c)); + for (Map.Entry entry : object.getObjects().entrySet()) { + drawCellDragging(canvas, xy, entry.getKey(), entry.getValue()); + } } private Pair getPosition(Offset offset, G obj, int count, Area spawnSize) { - return new Pair<>(((offset.x / count) * spawnSize.right) + margin * (offset.x+1), ((offset.y / count) * spawnSize.bottom) + margin + spawnSize.top); + return new Pair<>(((offset.x / count) * spawnSize.right) + margin * (offset.x + 1), ((offset.y / count) * spawnSize.bottom) + margin + spawnSize.top); } private void drawCellDragging(Canvas canvas, Pair xy, Offset offset, C c) { @@ -61,7 +63,9 @@ public class SpawnPainterGroup, C extends GroupCell> imp private void drawBlock(Canvas canvas, G groupCellGridBlock) { Pair origin = positions.get(groupCellGridBlock); - groupCellGridBlock.getObjects().forEach((offset1, groupCell) -> drawCell(canvas, origin, offset1, groupCell)); + for (Map.Entry entry : groupCellGridBlock.getObjects().entrySet()) { + drawCell(canvas, origin, entry.getKey(), entry.getValue()); + } } private void drawCell(Canvas canvas, Pair origin, Offset offset1, C cell) { diff --git a/app/src/main/java/org/agp8x/android/games/fillgrid/data/GridBoard.java b/app/src/main/java/org/agp8x/android/games/fillgrid/data/GridBoard.java index b02677c..19a12de 100644 --- a/app/src/main/java/org/agp8x/android/games/fillgrid/data/GridBoard.java +++ b/app/src/main/java/org/agp8x/android/games/fillgrid/data/GridBoard.java @@ -34,7 +34,7 @@ public class GridBoard, C extends Cell> implements Grid< @Override public boolean drop(Offset xy, G object) { if (fits(xy, object)) { - object.getObjects().forEach((offset, cell) -> contents.put(Offset.add(xy, offset), cell)); + contents.putAll(object.getObjects()); return true; } return false; @@ -65,10 +65,15 @@ public class GridBoard, C extends Cell> implements Grid< */ public int collapseFilledLines() { List deletionQueue = findFullLines(); - deletionQueue.stream().map(contents::get).distinct().forEach(Cell::markCollapsed); + for (Offset offset : deletionQueue) { + contents.get(offset).markCollapsed(); + } int count = deletionQueue.size(); System.out.println("DELETION QUEUE ("+count+"): "+deletionQueue); - deletionQueue.forEach(contents::remove); + //FIXME: move to removeCollapsed() + for (Offset offset : deletionQueue) { + contents.remove(offset); + } deletionQueue.clear(); return count; } @@ -126,11 +131,18 @@ public class GridBoard, C extends Cell> implements Grid< */ private boolean fits(Offset xy, G newObject) { Map objects = newObject.getObjects(); - return (objects.isEmpty()) || // object has no cells => fits - (objects.keySet().stream(). - filter(Objects::nonNull). // null cells are ignored - filter(offset -> !isSettable(xy, offset)). //clash with existing key - count() == 0); + boolean fits = objects.isEmpty(); + if (!fits){ + for (Offset offset : objects.keySet()) { + if (offset != null) { + if (!isSettable(xy,offset)){ + return false; + } + } + } + fits=true; + } + return fits; } /**