Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7f21cb1ad7 |
|
|
@ -27,7 +27,9 @@ public class GroupGridPainter<C extends GroupCell> implements GridPainter<C> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Canvas canvas, Map<Offset, C> cells, Pair<Integer, Integer> realDimensions) {
|
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) {
|
private void drawCell(Canvas canvas, Offset offset, C cell, Pair<Integer, Integer> realDimensions) {
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ public class SpawnPainterGroup<G extends GridObject<C>, C extends GroupCell> imp
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawDragging(Canvas canvas, Pair<Float, Float> xy, G object) {
|
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) {
|
private Pair<Integer, Integer> getPosition(Offset offset, G obj, int count, Area spawnSize) {
|
||||||
|
|
@ -61,7 +63,9 @@ public class SpawnPainterGroup<G extends GridObject<C>, C extends GroupCell> imp
|
||||||
|
|
||||||
private void drawBlock(Canvas canvas, G groupCellGridBlock) {
|
private void drawBlock(Canvas canvas, G groupCellGridBlock) {
|
||||||
Pair<Integer, Integer> origin = positions.get(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) {
|
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
|
@Override
|
||||||
public boolean drop(Offset xy, G object) {
|
public boolean drop(Offset xy, G object) {
|
||||||
if (fits(xy, object)) {
|
if (fits(xy, object)) {
|
||||||
object.getObjects().forEach((offset, cell) -> contents.put(Offset.add(xy, offset), cell));
|
contents.putAll(object.getObjects());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -65,10 +65,15 @@ public class GridBoard<G extends GridObject<C>, C extends Cell> implements Grid<
|
||||||
*/
|
*/
|
||||||
public int collapseFilledLines() {
|
public int collapseFilledLines() {
|
||||||
List<Offset> deletionQueue = findFullLines();
|
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();
|
int count = deletionQueue.size();
|
||||||
System.out.println("DELETION QUEUE ("+count+"): "+deletionQueue);
|
System.out.println("DELETION QUEUE ("+count+"): "+deletionQueue);
|
||||||
deletionQueue.forEach(contents::remove);
|
//FIXME: move to removeCollapsed()
|
||||||
|
for (Offset offset : deletionQueue) {
|
||||||
|
contents.remove(offset);
|
||||||
|
}
|
||||||
deletionQueue.clear();
|
deletionQueue.clear();
|
||||||
return count;
|
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) {
|
private boolean fits(Offset xy, G newObject) {
|
||||||
Map<Offset, C> objects = newObject.getObjects();
|
Map<Offset, C> objects = newObject.getObjects();
|
||||||
return (objects.isEmpty()) || // object has no cells => fits
|
boolean fits = objects.isEmpty();
|
||||||
(objects.keySet().stream().
|
if (!fits){
|
||||||
filter(Objects::nonNull). // null cells are ignored
|
for (Offset offset : objects.keySet()) {
|
||||||
filter(offset -> !isSettable(xy, offset)). //clash with existing key
|
if (offset != null) {
|
||||||
count() == 0);
|
if (!isSettable(xy,offset)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fits=true;
|
||||||
|
}
|
||||||
|
return fits;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue