generated from sigonasr2/CPlusPlusProjectTemplate
Clumps can now match on each other
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
80328a7855
commit
f64f41318a
Binary file not shown.
88
main.cpp
88
main.cpp
@ -291,6 +291,24 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (c.landTime>0){
|
||||||
|
for (int h=0;h<gameBoard.getBlockClumps().size();h++){
|
||||||
|
if (g==h)continue;
|
||||||
|
BlockClump&c2=gameBoard.getBlockClumps()[h];
|
||||||
|
if (c2.landTime>0){
|
||||||
|
for (int j=0;j<c2.getBlocks().size();j++){
|
||||||
|
Block&b2=c2.getBlocks()[j];
|
||||||
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
|
found=true;
|
||||||
|
checkX+=12;
|
||||||
|
tempMatchIDsX.push_back({(int)b2.pos.x/12,j,h});
|
||||||
|
goto outerRightCheck;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outerRightCheck:;
|
||||||
}while(found);
|
}while(found);
|
||||||
leftCheck:
|
leftCheck:
|
||||||
checkX=targetX-12;
|
checkX=targetX-12;
|
||||||
@ -307,6 +325,23 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (c.landTime>0){
|
||||||
|
for (int h=0;h<gameBoard.getBlockClumps().size();h++){
|
||||||
|
if (g==h)continue;
|
||||||
|
BlockClump&c2=gameBoard.getBlockClumps()[h];
|
||||||
|
if (c2.landTime>0){
|
||||||
|
for (int j=0;j<c2.getBlocks().size();j++){
|
||||||
|
Block&b2=c2.getBlocks()[j];
|
||||||
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
|
found=true;
|
||||||
|
checkX-=12;
|
||||||
|
tempMatchIDsX.push_back({(int)b2.pos.x/12,j,h});
|
||||||
|
goto outerRightCheck;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}while(found);
|
}while(found);
|
||||||
upCheck:
|
upCheck:
|
||||||
checkX=targetX;
|
checkX=targetX;
|
||||||
@ -323,6 +358,23 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (c.landTime>0){
|
||||||
|
for (int h=0;h<gameBoard.getBlockClumps().size();h++){
|
||||||
|
if (g==h)continue;
|
||||||
|
BlockClump&c2=gameBoard.getBlockClumps()[h];
|
||||||
|
if (c2.landTime>0){
|
||||||
|
for (int j=0;j<c2.getBlocks().size();j++){
|
||||||
|
Block&b2=c2.getBlocks()[j];
|
||||||
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
|
found=true;
|
||||||
|
checkY-=12;
|
||||||
|
tempMatchIDsY.push_back({(int)b2.pos.x/12,j,h});
|
||||||
|
goto outerRightCheck;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}while(found);
|
}while(found);
|
||||||
downCheck:
|
downCheck:
|
||||||
checkX=targetX;
|
checkX=targetX;
|
||||||
@ -339,6 +391,23 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (c.landTime>0){
|
||||||
|
for (int h=0;h<gameBoard.getBlockClumps().size();h++){
|
||||||
|
if (g==h)continue;
|
||||||
|
BlockClump&c2=gameBoard.getBlockClumps()[h];
|
||||||
|
if (c2.landTime>0){
|
||||||
|
for (int j=0;j<c2.getBlocks().size();j++){
|
||||||
|
Block&b2=c2.getBlocks()[j];
|
||||||
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
|
found=true;
|
||||||
|
checkY+=12;
|
||||||
|
tempMatchIDsY.push_back({(int)b2.pos.x/12,j,h});
|
||||||
|
goto outerRightCheck;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}while(found);
|
}while(found);
|
||||||
if (tempMatchIDsX.size()>2||tempMatchIDsY.size()>2) {
|
if (tempMatchIDsX.size()>2||tempMatchIDsY.size()>2) {
|
||||||
if (tempMatchIDsX.size()>2) {
|
if (tempMatchIDsX.size()>2) {
|
||||||
@ -362,8 +431,18 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (BlockMatchingInfo i:matchedBlockIDs) {
|
for (BlockMatchingInfo i:matchedBlockIDs) {
|
||||||
|
if (g==i.c){
|
||||||
Block&b=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
Block&b=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||||
b.col=BlockColor::LAUNCHED;
|
b.col=BlockColor::LAUNCHED;
|
||||||
|
} else {
|
||||||
|
Block&b=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||||
|
if (!b.markedForRemoval){
|
||||||
|
b.col=BlockColor::LAUNCHED;
|
||||||
|
c.addBlock(i.col,(gameBoard.getBlockClumps()[i.c].getBlockPosition(b).y-c.y)/12,BlockColor::LAUNCHED);
|
||||||
|
}
|
||||||
|
b.col=BlockColor::LAUNCHED;
|
||||||
|
b.markedForRemoval=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (matchedBlockIDs.size()>0){
|
if (matchedBlockIDs.size()>0){
|
||||||
c.vspeed=gameBoard.launchSpd[std::min(c.combo,(int)gameBoard.launchSpd.size()-1)]/(1+(c.getBlocks().size()*gameBoard.blockWeight));
|
c.vspeed=gameBoard.launchSpd[std::min(c.combo,(int)gameBoard.launchSpd.size()-1)]/(1+(c.getBlocks().size()*gameBoard.blockWeight));
|
||||||
@ -374,6 +453,15 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
//std::cout<<"Combo value is "<<c.combo<<std::endl;
|
//std::cout<<"Combo value is "<<c.combo<<std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int g=0;g<gameBoard.getBlockClumps().size();g++){
|
||||||
|
BlockClump&c=gameBoard.getBlockClumps()[g];
|
||||||
|
for (int i=0;i<c.getBlocks().size();i++){
|
||||||
|
Block&b=c.getBlocks()[i];
|
||||||
|
if (b.markedForRemoval){
|
||||||
|
c.removeBlock(i--);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
std::vector<BlockMatchingInfo>matchedBlockIDs; //Col followed by index
|
std::vector<BlockMatchingInfo>matchedBlockIDs; //Col followed by index
|
||||||
for (int i=0;i<gameBoard.boardSize.x;i++){
|
for (int i=0;i<gameBoard.boardSize.x;i++){
|
||||||
for (Block&b:gameBoard.getBlocks(i)) {
|
for (Block&b:gameBoard.getBlocks(i)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user