diff --git a/Board.cpp b/Board.cpp index 56ad0c8..67efb03 100644 --- a/Board.cpp +++ b/Board.cpp @@ -12,6 +12,7 @@ Board::Board(vi2d boardSize,float blockWeight,float gravity,float maxGravity,flo for (int i=0;i()); cols[i].reserve(boardSize.y+10); + warningFlashingLevel.push_back(0.f); } clumps.reserve(100); } diff --git a/Board.h b/Board.h index 11f5c24..7413686 100644 --- a/Board.h +++ b/Board.h @@ -53,6 +53,9 @@ class Board{ float launchTime; //How much time a stack rises before beginning descent. float landTime; SelectedBlockData selectedBlock; + int warningLevel=0; + int maxWarningLevel=0; + std::vector warningFlashingLevel; Board(); Board(vi2d boardSize,float blockWeight,float gravity,float maxGravity,float launchedGravity,float launchedMaxGravity,std::vector launchSpd,float launchTime,float landTime,float spawnRate,std::array colorRates,Renderable&tileset); void spawnBlock(int col); diff --git a/C++ProjectTemplate b/C++ProjectTemplate index d824369..3329b7c 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/main.cpp b/main.cpp index c0337e3..449eab4 100644 --- a/main.cpp +++ b/main.cpp @@ -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=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=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++;