diff --git a/BlockClump.h b/BlockClump.h index 6b33879..cff0c53 100644 --- a/BlockClump.h +++ b/BlockClump.h @@ -10,6 +10,7 @@ class BlockClump{ public: float vspeed=0; float landTime=0.f; + float launchTime=0.f; float y=0; BlockClump(){} std::vector&getBlocks(); diff --git a/Board.cpp b/Board.cpp index b7e5deb..cc1c4f2 100644 --- a/Board.cpp +++ b/Board.cpp @@ -5,8 +5,8 @@ extern Meteos*game; Board::Board() :colorHandler({}){} -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()){ +Board::Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float launchTime,float spawnRate,std::array colorRates,Renderable&tileset) +:boardSize(boardSize),gravity(gravity),maxGravity(maxGravity),launchSpd(launchSpd),launchTime(launchTime),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;i colorRates,Renderable&tileset); + Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float launchTime,float spawnRate,std::array colorRates,Renderable&tileset); void spawnBlock(int col); void addClump(BlockClump&c); std::vector&getBlocks(int col); diff --git a/C++ProjectTemplate b/C++ProjectTemplate index f26ea0b..81a865a 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/main.cpp b/main.cpp index f4b4c6f..5f08e01 100644 --- a/main.cpp +++ b/main.cpp @@ -12,13 +12,12 @@ bool Meteos::OnUserCreate() SPRITES["blocks_test.png"].Load("assets/blocks_test.png"); std::random_device rd; //Will be used to obtain a seed for the random number engine - //gen=std::mt19937(rd()); //Standard mersenne_twister_engine seeded with rd() - gen=std::mt19937(0); + gen=std::mt19937(rd()); //Standard mersenne_twister_engine seeded with rd() //Seed 0 causes a stacked block in the middle row followed by a giant stack up soon after. randBlockPos=std::uniform_int_distribution<>(0, 9); coinFlip=std::uniform_int_distribution<>(0, 1); - gameBoard=Board({10,14},0.2f,1.f,-6.f,1.0f,{3,0,0,0,0,0,0,0,0,0},SPRITES["blocks_test.png"]); + gameBoard=Board({10,14},0.04f,0.7f,-1.f,1.7f,1.0f,{3,0,0,0,0,0,0,0,0,0},SPRITES["blocks_test.png"]); return true; } @@ -42,7 +41,11 @@ void Meteos::updateGame(float fElapsedTime){ } for (int i=0;i0) { + c.launchTime-=fElapsedTime; + } else { + c.vspeed+=gameBoard.gravity; + } if (c.vspeed>gameBoard.maxGravity){ c.vspeed=gameBoard.maxGravity; } @@ -205,6 +208,7 @@ void Meteos::updateGame(float fElapsedTime){ Block&b=c.getBlocks()[i]; b.col=BlockColor::LAUNCHED; c.vspeed=gameBoard.launchSpd; + c.launchTime=gameBoard.launchTime; } } std::vector>matchedBlockIDs; //Col followed by index @@ -322,6 +326,7 @@ void Meteos::updateGame(float fElapsedTime){ } b.col=BlockColor::LAUNCHED; c.vspeed=gameBoard.launchSpd; + c.launchTime=gameBoard.launchTime; } for (std::pair&info:matchedBlockIDs) { Block&b=gameBoard.getBlocks(info.first)[info.second];