Compare commits

...

1 Commits

Author SHA1 Message Date
Clemens Klug 7f21cb1ad7 replace streams 2017-05-04 13:32:49 +02:00
3 changed files with 31 additions and 13 deletions

View File

@ -27,7 +27,9 @@ public class GroupGridPainter<C extends GroupCell> implements GridPainter<C> {
@Override
public void draw(Canvas canvas, Map<Offset, C> cells, Pair<Integer, Integer> realDimensions) {
cells.forEach((offset, groupCell) -> drawCell(canvas, offset, groupCell, realDimensions));
for (Map.Entry<Offset, C> entry : cells.entrySet()) {
drawCell(canvas, entry.getKey(),entry.getValue(), realDimensions);
}
}
private void drawCell(Canvas canvas, Offset offset, C cell, Pair<Integer, Integer> realDimensions) {

View File

@ -41,18 +41,20 @@ public class SpawnPainterGroup<G extends GridObject<C>, 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<Float, Float> xy, G object) {
object.getObjects().forEach((offset, c) -> drawCellDragging(canvas, xy, offset, c));
for (Map.Entry<Offset, C> entry : object.getObjects().entrySet()) {
drawCellDragging(canvas, xy, entry.getKey(), entry.getValue());
}
}
private Pair<Integer, Integer> 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<Float, Float> xy, Offset offset, C c) {
@ -61,7 +63,9 @@ public class SpawnPainterGroup<G extends GridObject<C>, C extends GroupCell> imp
private void drawBlock(Canvas canvas, G groupCellGridBlock) {
Pair<Integer, Integer> origin = positions.get(groupCellGridBlock);
groupCellGridBlock.getObjects().forEach((offset1, groupCell) -> drawCell(canvas, origin, offset1, groupCell));
for (Map.Entry<Offset, C> entry : groupCellGridBlock.getObjects().entrySet()) {
drawCell(canvas, origin, entry.getKey(), entry.getValue());
}
}
private void drawCell(Canvas canvas, Pair<Integer, Integer> origin, Offset offset1, C cell) {

View File

@ -34,7 +34,7 @@ public class GridBoard<G extends GridObject<C>, 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<G extends GridObject<C>, C extends Cell> implements Grid<
*/
public int collapseFilledLines() {
List<Offset> 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<G extends GridObject<C>, C extends Cell> implements Grid<
*/
private boolean fits(Offset xy, G newObject) {
Map<Offset, C> 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;
}
/**