|
|
|
@ -38,6 +38,33 @@ bool Meteos::OnUserUpdate(float fElapsedTime) |
|
|
|
|
for (int i=0;i<gameBoard.getBlockClumps().size();i++){ |
|
|
|
|
BlockClump&c=gameBoard.getBlockClumps()[i]; |
|
|
|
|
c.vspeed+=gameBoard.gravity*fElapsedTime; |
|
|
|
|
for (int j=0;j<gameBoard.getBlockClumps().size();j++) { |
|
|
|
|
if (i==j) continue; |
|
|
|
|
BlockClump&c2=gameBoard.getBlockClumps()[j]; |
|
|
|
|
for (int k=0;k<c2.getBlocks().size();k++) { |
|
|
|
|
Block&b2=c2.getBlocks()[k]; |
|
|
|
|
for (int l=0;l<c.getBlocks().size();l++) { |
|
|
|
|
Block&b3=c.getBlocks()[l]; |
|
|
|
|
if (c2.getBlockPosition(b2).x==c.getBlockPosition(b3).x&& |
|
|
|
|
c2.getBlockPosition(b2).y+12>=c.getBlockPosition(b3).y&& |
|
|
|
|
c2.getBlockPosition(b2).y<=c.getBlockPosition(b3).y+12) { |
|
|
|
|
float yDiff=c2.getBlockPosition(b2).y; |
|
|
|
|
float snapYPos=c.getBlockPosition(b3).y; |
|
|
|
|
yDiff-=snapYPos; |
|
|
|
|
c2.y+=yDiff; |
|
|
|
|
//Copy every block from one clump to the other
|
|
|
|
|
for (int m=0;m<c2.getBlocks().size();m++) { |
|
|
|
|
Block&b4=c2.getBlocks()[m]; |
|
|
|
|
c.addBlock(b4.pos.x/12,(c2.getBlockPosition(b4).y-c.y)/12); |
|
|
|
|
} |
|
|
|
|
c.vspeed+=c2.vspeed; |
|
|
|
|
gameBoard.removeClump(j--); |
|
|
|
|
goto nextClumpCollisionCheck; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
nextClumpCollisionCheck:; |
|
|
|
|
for (int j=0;j<c.getBlocks().size();j++){ |
|
|
|
|
Block&b=c.getBlocks()[j]; |
|
|
|
|
int col=b.pos.x/12; |
|
|
|
@ -46,14 +73,14 @@ bool Meteos::OnUserUpdate(float fElapsedTime) |
|
|
|
|
if (c.getBlockPosition(b).y+12>=b2.pos.y&&c.getBlockPosition(b).y<=b2.pos.y+12){ |
|
|
|
|
c.y=b2.pos.y-12; |
|
|
|
|
c.vspeed=0; |
|
|
|
|
gameBoard.removeClump(i--); |
|
|
|
|
gameBoard.convertClump(i--); |
|
|
|
|
goto nextClump; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (c.getBlockPosition(b).y>=gameBoard.yBottom) { |
|
|
|
|
c.y=gameBoard.yBottom; |
|
|
|
|
c.vspeed=0; |
|
|
|
|
gameBoard.removeClump(i--); |
|
|
|
|
gameBoard.convertClump(i--); |
|
|
|
|
goto nextClump; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|