#include "gameDefines.h" extern Meteos*game; Board::Board(vi2d boardSize,float gravity,float spawnRate) :boardSize(boardSize),gravity(gravity),spawnRate(spawnRate){ drawOffset={(float)game->ScreenWidth()/2-boardSize.x/2*12,(float)game->ScreenHeight()/2-boardSize.y/2*12}; yBottom=(boardSize.y-1)*12; for (int i=0;i()); } BlockClump c=BlockClump(); c.addBlock(0,0); c.addBlock(1,0); c.addBlock(2,0); c.vspeed=-20; c.y=yBottom-12; BlockClump c2=BlockClump(); c2.addBlock(0,0); c2.addBlock(1,0); c2.addBlock(1,-1); c2.addBlock(2,0); c2.vspeed=20; c2.y=24; clumps.push_back(c); clumps.push_back(c2); } void Board::spawnBlock(int col){ BlockClump c=BlockClump(); c.addBlock(col); for(int counter=1;game->coinFlip(game->gen)==0;counter++) { c.addBlock(col,-counter); } if (game->coinFlip(game->gen)==0) { if (col>0) { c.addBlock(col-1); for(int counter=1;game->coinFlip(game->gen)==0;counter++) { c.addBlock(col-1,-counter); } } } if (game->coinFlip(game->gen)==0) { if (colcoinFlip(game->gen)==0;counter++) { c.addBlock(col+1,-counter); } } } clumps.push_back(c); } std::vector&Board::getBlocks(int col){ return cols[col]; } std::vector&Board::getBlockClumps(){ return clumps; } void Board::removeClump(int ind){ clumps.erase(clumps.begin()+ind); } void Board::convertClump(int ind){ BlockClump&c=clumps[ind]; for (Block&b:c.getBlocks()){ if (b.markedForDeletion) continue; bool emptyAirBelow=true; for (int i=0;i=b2.pos.y&&c.getBlockPosition(b).y<=b2.pos.y+12) { emptyAirBelow=false; break; } } if (c.getBlockPosition(b).y>=yBottom) { emptyAirBelow=false; } if (emptyAirBelow) { BlockClump c2; for (int i=0;i