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);
|
warningFlashingLevel.push_back(0.f);
|
||||||
}
|
}
|
||||||
clumps.reserve(100);
|
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){
|
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);
|
coinFlip=std::uniform_int_distribution<>(0, 1);
|
||||||
comboOverlayOffset=std::uniform_int_distribution<>(-16,16);
|
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"]);
|
60*10,SPRITES["blocks_test.png"]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -98,7 +98,7 @@ void Meteos::handleInput(){
|
|||||||
}
|
}
|
||||||
found:;
|
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.
|
//Fling the block upwards.
|
||||||
BlockClump newClump;
|
BlockClump newClump;
|
||||||
Block&targetBlock=gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind];
|
Block&targetBlock=gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind];
|
||||||
@ -121,7 +121,7 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
lastBlockSpawn+=fElapsedTime;
|
lastBlockSpawn+=fElapsedTime;
|
||||||
if (lastBlockSpawn>=gameBoard.spawnRate){
|
if (lastBlockSpawn>=gameBoard.spawnRate){
|
||||||
lastBlockSpawn-=gameBoard.spawnRate;
|
lastBlockSpawn-=gameBoard.spawnRate;
|
||||||
gameBoard.spawnBlock(randBlockPos(gen));
|
//gameBoard.spawnBlock(randBlockPos(gen));
|
||||||
}
|
}
|
||||||
for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){
|
for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){
|
||||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||||
@ -261,20 +261,21 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
c.landTime=0;
|
c.landTime=0;
|
||||||
nextClump:;
|
nextClump:;
|
||||||
}
|
}
|
||||||
for (BlockClump&c:gameBoard.getBlockClumps()){
|
for (int g=0;g<gameBoard.getBlockClumps().size();g++){
|
||||||
std::vector<int>matchedBlockIDs;
|
BlockClump&c=gameBoard.getBlockClumps()[g];
|
||||||
|
std::vector<BlockMatchingInfo>matchedBlockIDs;
|
||||||
for (Block&b:c.getBlocks()) {
|
for (Block&b:c.getBlocks()) {
|
||||||
b.addedToLaunchList=false;
|
b.addedToLaunchList=false;
|
||||||
}
|
}
|
||||||
for (int i=0;i<c.getBlocks().size();i++) {
|
for (int i=0;i<c.getBlocks().size();i++) {
|
||||||
Block&b=c.getBlocks()[i];
|
Block&b=c.getBlocks()[i];
|
||||||
std::vector<int>tempMatchIDsX;
|
std::vector<BlockMatchingInfo>tempMatchIDsX;
|
||||||
std::vector<int>tempMatchIDsY;
|
std::vector<BlockMatchingInfo>tempMatchIDsY;
|
||||||
float targetX=b.pos.x;
|
float targetX=b.pos.x;
|
||||||
float targetY=b.pos.y;
|
float targetY=b.pos.y;
|
||||||
bool found=false;
|
bool found=false;
|
||||||
tempMatchIDsX.push_back(i);
|
tempMatchIDsX.push_back({(int)b.pos.x/12,i,g});
|
||||||
tempMatchIDsY.push_back(i);
|
tempMatchIDsY.push_back({(int)b.pos.x/12,i,g});
|
||||||
rightCheck:
|
rightCheck:
|
||||||
float checkX=targetX+12;
|
float checkX=targetX+12;
|
||||||
float checkY=targetY;
|
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) {
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
found=true;
|
found=true;
|
||||||
checkX+=12;
|
checkX+=12;
|
||||||
tempMatchIDsX.push_back(j);
|
tempMatchIDsX.push_back({(int)b.pos.x/12,j,g});
|
||||||
break;
|
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) {
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
found=true;
|
found=true;
|
||||||
checkX-=12;
|
checkX-=12;
|
||||||
tempMatchIDsX.push_back(j);
|
tempMatchIDsX.push_back({(int)b.pos.x/12,j,g});
|
||||||
break;
|
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) {
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
found=true;
|
found=true;
|
||||||
checkY-=12;
|
checkY-=12;
|
||||||
tempMatchIDsY.push_back(j);
|
tempMatchIDsY.push_back({(int)b.pos.x/12,j,g});
|
||||||
break;
|
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) {
|
if (b.col==b2.col&&b2.col!=BlockColor::LAUNCHED&&b2.pos.x==checkX&&b2.pos.y==checkY) {
|
||||||
found=true;
|
found=true;
|
||||||
checkY+=12;
|
checkY+=12;
|
||||||
tempMatchIDsY.push_back(j);
|
tempMatchIDsY.push_back({(int)b.pos.x/12,j,g});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}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) {
|
||||||
for (int i:tempMatchIDsX) {
|
for (BlockMatchingInfo i:tempMatchIDsX) {
|
||||||
Block&bb=c.getBlocks()[i];
|
Block&bb=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||||
if (!bb.addedToLaunchList) {
|
if (!bb.addedToLaunchList) {
|
||||||
bb.addedToLaunchList=true;
|
bb.addedToLaunchList=true;
|
||||||
matchedBlockIDs.push_back(i);
|
matchedBlockIDs.push_back(i);
|
||||||
@ -350,8 +351,8 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tempMatchIDsY.size()>2) {
|
if (tempMatchIDsY.size()>2) {
|
||||||
for (int i:tempMatchIDsY) {
|
for (BlockMatchingInfo i:tempMatchIDsY) {
|
||||||
Block&bb=c.getBlocks()[i];
|
Block&bb=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||||
if (!bb.addedToLaunchList) {
|
if (!bb.addedToLaunchList) {
|
||||||
bb.addedToLaunchList=true;
|
bb.addedToLaunchList=true;
|
||||||
matchedBlockIDs.push_back(i);
|
matchedBlockIDs.push_back(i);
|
||||||
@ -360,8 +361,8 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i:matchedBlockIDs) {
|
for (BlockMatchingInfo i:matchedBlockIDs) {
|
||||||
Block&b=c.getBlocks()[i];
|
Block&b=gameBoard.getBlockClumps()[i.c].getBlocks()[i.ind];
|
||||||
b.col=BlockColor::LAUNCHED;
|
b.col=BlockColor::LAUNCHED;
|
||||||
}
|
}
|
||||||
if (matchedBlockIDs.size()>0){
|
if (matchedBlockIDs.size()>0){
|
||||||
@ -369,7 +370,7 @@ void Meteos::updateGame(float fElapsedTime){
|
|||||||
c.launchTime=gameBoard.launchTime;
|
c.launchTime=gameBoard.launchTime;
|
||||||
c.combo++;
|
c.combo++;
|
||||||
vi2d randomOffset={comboOverlayOffset(gen),comboOverlayOffset(gen)};
|
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;
|
//std::cout<<"Combo value is "<<c.combo<<std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user