Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7f21cb1ad7 |
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue