Block flinging mechanics implemented

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent ebcacc5381
commit fc563a25aa
  1. 1
      BlockClump.h
  2. BIN
      C++ProjectTemplate
  3. 26
      main.cpp

@ -13,6 +13,7 @@ class BlockClump{
float launchTime=0.f;
int combo=0;
float y=0;
bool flinged=false;
BlockClump();
std::vector<Block>&getBlocks();
void addBlock(int col,BlockColor color);

Binary file not shown.

@ -98,6 +98,19 @@ void Meteos::handleInput(){
}
found:;
}
if (gameBoard.selectedBlock.c==-1&&gameBoard.selectedBlock.col!=-1&&gameBoard.boardSize.y-mouseRow>gameBoard.getBlocks(gameBoard.selectedBlock.col).size()){
//Fling the block upwards.
BlockClump newClump;
Block&targetBlock=gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind];
newClump.y=targetBlock.pos.y-1;
newClump.launchTime=999999;
newClump.vspeed=gameBoard.launchSpd[0];
newClump.flinged=true;
newClump.addBlock(gameBoard.selectedBlock.col,targetBlock.col);
gameBoard.addClump(newClump);
gameBoard.removeBlock(gameBoard.selectedBlock.col,gameBoard.selectedBlock.ind);
gameBoard.selectedBlock={-1,-1,-1};
}
}
if (GetMouse(0).bReleased){
gameBoard.selectedBlock={-1,-1,-1};
@ -126,6 +139,10 @@ void Meteos::updateGame(float fElapsedTime){
c.vspeed=gameBoard.maxGravity;
}
}
if (c.flinged&&c.y<12*3){
c.flinged=false;
c.launchTime=0;
}
for (int j=gameBoard.getBlockClumps().size()-1;j>=0;j--) {
if (i==j) continue;
BlockClump&c2=gameBoard.getBlockClumps()[j];
@ -192,8 +209,15 @@ void Meteos::updateGame(float fElapsedTime){
}
if (overlappingBlocks){
std::cout<<"Block b3 "<<b3.pos<<"!"<<std::endl;
}
if (!c.flinged&&!c2.flinged){
c.vspeed=std::min(c.vspeed,c2.vspeed);
}
if (c.flinged||c2.flinged){
c.launchTime=0;
}
c.vspeed=std::min(c.vspeed,c2.vspeed);
c.flinged=false;
c2.flinged=false;
c.combo=std::max(c.combo,c2.combo);
c.landTime=std::max(c.landTime,c2.landTime);
c.sortBlocks();

Loading…
Cancel
Save