diff --git a/Block.h b/Block.h index e227bff..434040b 100644 --- a/Block.h +++ b/Block.h @@ -5,6 +5,7 @@ class Block{ public: vf2d pos; + bool markedForDeletion=false; Block(vf2d pos) :pos(pos){} }; diff --git a/Board.cpp b/Board.cpp index 3c232ef..7255254 100644 --- a/Board.cpp +++ b/Board.cpp @@ -37,9 +37,35 @@ std::vector&Board::getBlockClumps(){ void Board::removeClump(int ind){ BlockClump&c=clumps[ind]; - for (Block b:c.getBlocks()){ - cols[b.pos.x/12].push_back(b); - cols[b.pos.x/12][cols[b.pos.x/12].size()-1].pos=c.getBlockPosition(b); + for (Block&b:c.getBlocks()){ + if (b.markedForDeletion) continue; + vf2d relativePos=b.pos; + b.pos=c.getBlockPosition(b); + bool emptyAirBelow=true; + for (int i=0;i=b2.pos.y&&b.pos.y<=b2.pos.y+12) { + emptyAirBelow=false; + break; + } + } + if (b.pos.y>=yBottom) { + emptyAirBelow=false; + } + if (emptyAirBelow) { + BlockClump c2; + for (int i=0;i