|
|
|
@ -44,6 +44,60 @@ bool Meteos::OnUserUpdate(float fElapsedTime) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Meteos::handleInput(){ |
|
|
|
|
if (GetMouse(0).bHeld){ |
|
|
|
|
int mouseX=(GetMouseX()-gameBoard.drawOffset.x); |
|
|
|
|
int mouseY=(GetMouseY()-gameBoard.drawOffset.y); |
|
|
|
|
int mouseCol=mouseX/12; |
|
|
|
|
int mouseRow=mouseY/12; |
|
|
|
|
if (mouseCol>=0&&mouseCol<gameBoard.boardSize.x) { |
|
|
|
|
for (int y=0;y<gameBoard.getBlocks(mouseCol).size();y++){ |
|
|
|
|
Block&b=gameBoard.getBlocks(mouseCol)[y]; |
|
|
|
|
if (b.pos.y/12==mouseRow){ |
|
|
|
|
SelectedBlockData newData={mouseCol,y,-1}; |
|
|
|
|
if (gameBoard.selectedBlock.col!=-1&&mouseCol==gameBoard.selectedBlock.col){ |
|
|
|
|
//See if these two can be swapped.
|
|
|
|
|
Block&b1=gameBoard.getBlock(gameBoard.selectedBlock); |
|
|
|
|
Block&b2=gameBoard.getBlock(newData); |
|
|
|
|
int y1=(gameBoard.selectedBlock.c!=-1)?gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlockPosition(gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks()[gameBoard.selectedBlock.ind]).y:gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind].pos.y; |
|
|
|
|
int y2=(newData.c!=-1)?gameBoard.getBlockClumps()[newData.c].getBlockPosition(gameBoard.getBlockClumps()[newData.c].getBlocks()[newData.ind]).y:gameBoard.getBlocks(newData.col)[newData.ind].pos.y; |
|
|
|
|
if (b1.pos.x==b2.pos.x&&std::abs(y1-y2)<=12){ |
|
|
|
|
//Swap the two!
|
|
|
|
|
BlockColor tempCol=b1.col; |
|
|
|
|
b1.col=b2.col; |
|
|
|
|
b2.col=tempCol; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
gameBoard.selectedBlock=newData; |
|
|
|
|
goto found; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (int i=0;i<gameBoard.getBlockClumps().size();i++){ |
|
|
|
|
BlockClump&c=gameBoard.getBlockClumps()[i]; |
|
|
|
|
for (int j=0;j<c.getBlocks().size();j++){ |
|
|
|
|
Block&b=c.getBlocks()[j]; |
|
|
|
|
if (b.pos.x/12==mouseCol&&c.getBlockPosition(b).y<=mouseY&&c.getBlockPosition(b).y+12>=mouseY){ |
|
|
|
|
SelectedBlockData newData={mouseCol,j,i}; |
|
|
|
|
if (gameBoard.selectedBlock.col!=-1&&mouseCol==gameBoard.selectedBlock.col){ |
|
|
|
|
//See if these two can be swapped.
|
|
|
|
|
Block&b1=gameBoard.getBlock(gameBoard.selectedBlock); |
|
|
|
|
Block&b2=gameBoard.getBlock(newData); |
|
|
|
|
int y1=(gameBoard.selectedBlock.c!=-1)?gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlockPosition(gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks()[gameBoard.selectedBlock.ind]).y:gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind].pos.y; |
|
|
|
|
int y2=(newData.c!=-1)?gameBoard.getBlockClumps()[newData.c].getBlockPosition(gameBoard.getBlockClumps()[newData.c].getBlocks()[newData.ind]).y:gameBoard.getBlocks(newData.col)[newData.ind].pos.y; |
|
|
|
|
if (b1.pos.x==b2.pos.x&&std::abs(y1-y2)<=12){ |
|
|
|
|
//Swap the two!
|
|
|
|
|
BlockColor tempCol=b1.col; |
|
|
|
|
b1.col=b2.col; |
|
|
|
|
b2.col=tempCol; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
gameBoard.selectedBlock=newData; |
|
|
|
|
goto found; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
found:; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (GetMouse(0).bReleased){ |
|
|
|
|
gameBoard.selectedBlock={-1,-1,-1}; |
|
|
|
|
} |
|
|
|
@ -585,60 +639,6 @@ void Meteos::updateGame(float fElapsedTime){ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
invalidatedExit: |
|
|
|
|
if (GetMouse(0).bHeld){ |
|
|
|
|
int mouseX=(GetMouseX()-gameBoard.drawOffset.x); |
|
|
|
|
int mouseY=(GetMouseY()-gameBoard.drawOffset.y); |
|
|
|
|
int mouseCol=mouseX/12; |
|
|
|
|
int mouseRow=mouseY/12; |
|
|
|
|
if (mouseCol>=0&&mouseCol<gameBoard.boardSize.x) { |
|
|
|
|
for (int y=0;y<gameBoard.getBlocks(mouseCol).size();y++){ |
|
|
|
|
Block&b=gameBoard.getBlocks(mouseCol)[y]; |
|
|
|
|
if (b.pos.y/12==mouseRow){ |
|
|
|
|
SelectedBlockData newData={mouseCol,y,-1}; |
|
|
|
|
if (gameBoard.selectedBlock.col!=-1&&mouseCol==gameBoard.selectedBlock.col){ |
|
|
|
|
//See if these two can be swapped.
|
|
|
|
|
Block&b1=gameBoard.getBlock(gameBoard.selectedBlock); |
|
|
|
|
Block&b2=gameBoard.getBlock(newData); |
|
|
|
|
int y1=(gameBoard.selectedBlock.c!=-1)?gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlockPosition(gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks()[gameBoard.selectedBlock.ind]).y:gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind].pos.y; |
|
|
|
|
int y2=(newData.c!=-1)?gameBoard.getBlockClumps()[newData.c].getBlockPosition(gameBoard.getBlockClumps()[newData.c].getBlocks()[newData.ind]).y:gameBoard.getBlocks(newData.col)[newData.ind].pos.y; |
|
|
|
|
if (b1.pos.x==b2.pos.x&&std::abs(y1-y2)<=12){ |
|
|
|
|
//Swap the two!
|
|
|
|
|
BlockColor tempCol=b1.col; |
|
|
|
|
b1.col=b2.col; |
|
|
|
|
b2.col=tempCol; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
gameBoard.selectedBlock=newData; |
|
|
|
|
goto found; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (int i=0;i<gameBoard.getBlockClumps().size();i++){ |
|
|
|
|
BlockClump&c=gameBoard.getBlockClumps()[i]; |
|
|
|
|
for (int j=0;j<c.getBlocks().size();j++){ |
|
|
|
|
Block&b=c.getBlocks()[j]; |
|
|
|
|
if (b.pos.x/12==mouseCol&&c.getBlockPosition(b).y<=mouseY&&c.getBlockPosition(b).y+12>=mouseY){ |
|
|
|
|
SelectedBlockData newData={mouseCol,j,i}; |
|
|
|
|
if (gameBoard.selectedBlock.col!=-1&&mouseCol==gameBoard.selectedBlock.col){ |
|
|
|
|
//See if these two can be swapped.
|
|
|
|
|
Block&b1=gameBoard.getBlock(gameBoard.selectedBlock); |
|
|
|
|
Block&b2=gameBoard.getBlock(newData); |
|
|
|
|
int y1=(gameBoard.selectedBlock.c!=-1)?gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlockPosition(gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks()[gameBoard.selectedBlock.ind]).y:gameBoard.getBlocks(gameBoard.selectedBlock.col)[gameBoard.selectedBlock.ind].pos.y; |
|
|
|
|
int y2=(newData.c!=-1)?gameBoard.getBlockClumps()[newData.c].getBlockPosition(gameBoard.getBlockClumps()[newData.c].getBlocks()[newData.ind]).y:gameBoard.getBlocks(newData.col)[newData.ind].pos.y; |
|
|
|
|
if (b1.pos.x==b2.pos.x&&std::abs(y1-y2)<=12){ |
|
|
|
|
//Swap the two!
|
|
|
|
|
BlockColor tempCol=b1.col; |
|
|
|
|
b1.col=b2.col; |
|
|
|
|
b2.col=tempCol; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
gameBoard.selectedBlock=newData; |
|
|
|
|
goto found; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
found:; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (int i=comboDisplayList.size()-1;i>=0;i--){ |
|
|
|
|
ComboOverlay&c=comboDisplayList[i]; |
|
|
|
|
c.lifetime++; |
|
|
|
|