|
|
|
#include "gameDefines.h"
|
|
|
|
|
|
|
|
extern Meteos*game;
|
|
|
|
|
|
|
|
BlockClump::BlockClump(){
|
|
|
|
blocks.reserve(game->gameBoard.boardSize.x*game->gameBoard.boardSize.y);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::vector<Block>&BlockClump::getBlocks(){
|
|
|
|
return blocks;
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::addBlock(int col,BlockColor color){
|
|
|
|
blocks.push_back(Block({(float)col*12,0},color));
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::addBlock(int col,int row,BlockColor color){
|
|
|
|
blocks.push_back(Block({(float)col*12,(float)row*12},color));
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::addBlock(vf2d offset,BlockColor color){
|
|
|
|
blocks.push_back(Block(offset,color));
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::addBlockOnTopOf(int col,BlockColor color,int defaultY){
|
|
|
|
int highestY=999999;
|
|
|
|
for (Block&b:blocks) {
|
|
|
|
if (b.pos.x/12==col&&b.pos.y<=highestY) {
|
|
|
|
highestY=b.pos.y;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
addBlock(col,(highestY==999999)?defaultY/12:highestY/12-1,color);
|
|
|
|
}
|
|
|
|
|
|
|
|
vf2d BlockClump::getBlockPosition(Block&b){
|
|
|
|
return {b.pos.x,b.pos.y+y};
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::sortBlocks(){
|
|
|
|
std::sort(blocks.begin(),blocks.end(),[](Block&b1,Block&b2){
|
|
|
|
return b1.pos.y>b2.pos.y;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void BlockClump::removeBlock(int i){
|
|
|
|
blocks.erase(blocks.begin()+i);
|
|
|
|
}
|