diff --git a/Board.cpp b/Board.cpp index 367ee56..f304ef6 100644 --- a/Board.cpp +++ b/Board.cpp @@ -5,8 +5,8 @@ extern Meteos*game; Board::Board() :colorHandler({}){} -Board::Board(vi2d boardSize,float gravity,float launchSpd,float spawnRate,std::array colorRates,Renderable&tileset) -:boardSize(boardSize),gravity(gravity),launchSpd(launchSpd),spawnRate(spawnRate),colorHandler(colorRates),tileset(tileset.Decal()){ +Board::Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array colorRates,Renderable&tileset) +:boardSize(boardSize),gravity(gravity),maxGravity(maxGravity),launchSpd(launchSpd),spawnRate(spawnRate),colorHandler(colorRates),tileset(tileset.Decal()){ drawOffset={(float)game->ScreenWidth()/2-boardSize.x/2*12,(float)game->ScreenHeight()/2-boardSize.y/2*12}; yBottom=(boardSize.y-1)*12; for (int i=0;icoinFlip(game->gen)==0;counter++) { - c.addBlock(col,-counter,colorHandler.getRandomColor()); - } - if (game->coinFlip(game->gen)==0) { - if (col>0) { - c.addBlock(col-1,colorHandler.getRandomColor()); - for(int counter=1;game->coinFlip(game->gen)==0;counter++) { - c.addBlock(col-1,-counter,colorHandler.getRandomColor()); - } - } - } - if (game->coinFlip(game->gen)==0) { - if (colcoinFlip(game->gen)==0;counter++) { - c.addBlock(col+1,-counter,colorHandler.getRandomColor()); - } - } - } + c.y-=128; + c.addBlock(col,0,colorHandler.getRandomColor()); clumps.push_back(c); } diff --git a/Board.h b/Board.h index 55642ba..c1f9af6 100644 --- a/Board.h +++ b/Board.h @@ -38,10 +38,11 @@ class Board{ vf2d drawOffset; vi2d boardSize; float gravity; + float maxGravity; float spawnRate; float launchSpd; Board(); - Board(vi2d boardSize,float gravity,float launchSpd,float spawnRate,std::array colorRates,Renderable&tileset); + Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array colorRates,Renderable&tileset); void spawnBlock(int col); std::vector&getBlocks(int col); std::vector&getBlockClumps(); diff --git a/C++ProjectTemplate b/C++ProjectTemplate index 57287cc..5c9ad01 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/main.cpp b/main.cpp index 183bc2d..f763355 100644 --- a/main.cpp +++ b/main.cpp @@ -16,7 +16,7 @@ bool Meteos::OnUserCreate() randBlockPos=std::uniform_int_distribution<>(0, 9); coinFlip=std::uniform_int_distribution<>(0, 1); - gameBoard=Board({10,14},12.f,-20.f,3.0f,{3,0,0,0,0,0,0,0,0,0},SPRITES["blocks_test.png"]); + gameBoard=Board({10,14},20.f,100.f,-20.f,1.0f,{3,3,2,3,2,0,0,0,0,0},SPRITES["blocks_test.png"]); return true; } @@ -25,8 +25,8 @@ bool Meteos::OnUserUpdate(float fElapsedTime) { fElapsedTime=std::min(fElapsedTime,1/60.f); lastBlockSpawn+=fElapsedTime; - if (lastBlockSpawn>=3.0f){ - lastBlockSpawn-=3.0f; + if (lastBlockSpawn>=gameBoard.spawnRate){ + lastBlockSpawn-=gameBoard.spawnRate; gameBoard.spawnBlock(randBlockPos(gen)); } Clear(Pixel(32,32,255)); @@ -42,6 +42,9 @@ bool Meteos::OnUserUpdate(float fElapsedTime) for (int i=0;igameBoard.maxGravity){ + c.vspeed=gameBoard.maxGravity; + } for (int j=0;j=b2.pos.y&&c.getBlockPosition(b).y<=b2.pos.y+12){ - c.y=b2.pos.y-12; + c.y-=c.getBlockPosition(b).y+12-b2.pos.y; c.vspeed=0; gameBoard.convertClump(i--); goto nextClump; } } if (c.getBlockPosition(b).y>=gameBoard.yBottom) { - c.y=gameBoard.yBottom; + c.y-=c.getBlockPosition(b).y-gameBoard.yBottom; c.vspeed=0; gameBoard.convertClump(i--); goto nextClump; @@ -171,11 +174,13 @@ bool Meteos::OnUserUpdate(float fElapsedTime) for (Block*b2:matchedBlocksX) { b2->col=BlockColor::LAUNCHED; } + c.vspeed=gameBoard.launchSpd; } if (matchedBlocksY.size()>2) { for (Block*b2:matchedBlocksY) { b2->col=BlockColor::LAUNCHED; } + c.vspeed=gameBoard.launchSpd; } } }