generated from sigonasr2/CPlusPlusProjectTemplate
Block matching info implemented for clumbs
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
fc563a25aa
commit
80328a7855
@ -17,6 +17,15 @@ maxWarningLevel(maxWarningLevel){
|
||||
warningFlashingLevel.push_back(0.f);
|
||||
}
|
||||
clumps.reserve(100);
|
||||
BlockClump test1;
|
||||
test1.addBlock(4,BlockColor::WHITE);
|
||||
test1.addBlock(5,BlockColor::WHITE);
|
||||
BlockClump test2;
|
||||
test2.y=0;
|
||||
test2.addBlock(6,BlockColor::WHITE);
|
||||
test2.addBlock(7,BlockColor::WHITE);
|
||||
addClump(test1);
|
||||
addClump(test2);
|
||||
}
|
||||
|
||||
void Board::spawnBlock(int col){
|
||||
|
Binary file not shown.
41
main.cpp
41
main.cpp
@ -24,7 +24,7 @@ bool Meteos::OnUserCreate()
|
||||
coinFlip=std::uniform_int_distribution<>(0, 1);
|
||||
comboOverlayOffset=std::uniform_int_distribution<>(-16,16);
|
||||
|
||||
gameBoard=Board({10,14},0.02f,0.04f,1.2f,0.04f,0.4f,{-1.f,-1.5f,-2.f,-2.5f,-4.f},1.7f,2.0f,1.0f,{3,3,1,2,3,0,0,0,0,0},
|
||||
gameBoard=Board({10,14},0.02f,0.04f,1.2f,0.04f,0.4f,{-1.f,-1.5f,-2.f,-2.5f,-4.f},1.7f,2.0f,0.2f,{3,3,1,2,3,0,0,0,0,0},
|
||||
60*10,SPRITES["blocks_test.png"]);
|
||||
|
||||
return true;
|
||||
@ -98,7 +98,7 @@ void Meteos::handleInput(){
|
||||
}
|
||||
found:;
|
||||
}
|
||||
if (gameBoard.selectedBlock.c==-1&&gameBoard.selectedBlock.col!=-1&&gameBoard.boardSize.y-mouseRow>gameBoard.getBlocks(gameBoard.selectedBlock.col).size()){
|
||||
if (gameBoard.selectedBlock.c==-1&&gameBoard.selectedBlock.col!=-1&&gameBoard.boardSize.y-mouseRow>gameBoard.getBlocks(gameBoard.selectedBlock.col).size()&&gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind].pos.y>12){
|
||||
//Fling the block upwards.
|
||||
BlockClump newClump;
|
||||
Block&targetBlock=gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind];
|
||||
@ -121,7 +121,7 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
lastBlockSpawn+=fElapsedTime;
|
||||
if (lastBlockSpawn>=gameBoard.spawnRate){
|
||||
lastBlockSpawn-=gameBoard.spawnRate;
|
||||
gameBoard.spawnBlock(randBlockPos(gen));
|
||||
//gameBoard.spawnBlock(randBlockPos(gen));
|
||||
}
|
||||
for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||
@ -261,20 +261,21 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
c.landTime=0;
|
||||
nextClump:;
|
||||
}
|
||||
for (BlockClump&c:gameBoard.getBlockClumps()){
|
||||
std::vector<int>matchedBlockIDs;
|
||||
for (int g=0;g<gameBoard.getBlockClumps().size();g++){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[g];
|
||||
std::vector<BlockMatchingInfo>matchedBlockIDs;
|
||||
for (Block&b:c.getBlocks()) {
|
||||
b.addedToLaunchList=false;
|
||||
}
|
||||
for (int i=0;i<c.getBlocks().size();i++) {
|
||||
Block&b=c.getBlocks()[i];
|
||||
std::vector<int>tempMatchIDsX;
|
||||
std::vector<int>tempMatchIDsY;
|
||||
std::vector<BlockMatchingInfo>tempMatchIDsX;
|
||||
std::vector<BlockMatchingInfo>tempMatchIDsY;
|
||||
float targetX=b.pos.x;
|
||||
float targetY=b.pos.y;
|
||||
bool found=false;
|
||||
tempMatchIDsX.push_back(i);
|
||||
tempMatchIDsY.push_back(i);
|
||||
tempMatchIDsX.push_back({(int)b.pos.x/12,i,g});
|
||||
tempMatchIDsY.push_back({(int)b.pos.x/12,i,g});
|
||||
rightCheck:
|
||||
float checkX=targetX+12;
|
||||
float checkY=targetY;
|
||||
@ -286,7 +287,7 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||
found=true;
|
||||
checkX+=12;
|
||||
tempMatchIDsX.push_back(j);
|
||||
tempMatchIDsX.push_back({(int)b.pos.x/12,j,g});
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -302,7 +303,7 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||
found=true;
|
||||
checkX-=12;
|
||||
tempMatchIDsX.push_back(j);
|
||||
tempMatchIDsX.push_back({(int)b.pos.x/12,j,g});
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -318,7 +319,7 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||
found=true;
|
||||
checkY-=12;
|
||||
tempMatchIDsY.push_back(j);
|
||||
tempMatchIDsY.push_back({(int)b.pos.x/12,j,g});
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -334,15 +335,15 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||
found=true;
|
||||
checkY+=12;
|
||||
tempMatchIDsY.push_back(j);
|
||||
tempMatchIDsY.push_back({(int)b.pos.x/12,j,g});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}while(found);
|
||||
if (tempMatchIDsX.size()>2||tempMatchIDsY.size()>2) {
|
||||
if (tempMatchIDsX.size()>2) {
|
||||
for (int i:tempMatchIDsX) {
|
||||
Block&bb=c.getBlocks()[i];
|
||||
for (BlockMatchingInfo i:tempMatchIDsX) {
|
||||
Block&bb=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||
if (!bb.addedToLaunchList) {
|
||||
bb.addedToLaunchList=true;
|
||||
matchedBlockIDs.push_back(i);
|
||||
@ -350,8 +351,8 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
}
|
||||
}
|
||||
if (tempMatchIDsY.size()>2) {
|
||||
for (int i:tempMatchIDsY) {
|
||||
Block&bb=c.getBlocks()[i];
|
||||
for (BlockMatchingInfo i:tempMatchIDsY) {
|
||||
Block&bb=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||
if (!bb.addedToLaunchList) {
|
||||
bb.addedToLaunchList=true;
|
||||
matchedBlockIDs.push_back(i);
|
||||
@ -360,8 +361,8 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i:matchedBlockIDs) {
|
||||
Block&b=c.getBlocks()[i];
|
||||
for (BlockMatchingInfo i:matchedBlockIDs) {
|
||||
Block&b=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||
b.col=BlockColor::LAUNCHED;
|
||||
}
|
||||
if (matchedBlockIDs.size()>0){
|
||||
@ -369,7 +370,7 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
c.launchTime=gameBoard.launchTime;
|
||||
c.combo++;
|
||||
vi2d randomOffset={comboOverlayOffset(gen),comboOverlayOffset(gen)};
|
||||
comboDisplayList.push_back({c.getBlockPosition(c.getBlocks()[matchedBlockIDs[0]])+randomOffset,c.combo});
|
||||
comboDisplayList.push_back({c.getBlockPosition(gameBoard.getBlockClumps()[matchedBlockIDs[0].c].getBlocks()[matchedBlockIDs[0].ind])+randomOffset,c.combo});
|
||||
//std::cout<<"Combo value is "<<c.combo<<std::endl;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user