generated from sigonasr2/CPlusPlusProjectTemplate
Added launch time
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
b87fbcce50
commit
c8e5d4f125
@ -10,6 +10,7 @@ class BlockClump{
|
||||
public:
|
||||
float vspeed=0;
|
||||
float landTime=0.f;
|
||||
float launchTime=0.f;
|
||||
float y=0;
|
||||
BlockClump(){}
|
||||
std::vector<Block>&getBlocks();
|
||||
|
@ -5,8 +5,8 @@ extern Meteos*game;
|
||||
Board::Board()
|
||||
:colorHandler({}){}
|
||||
|
||||
Board::Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array<int,10> 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<int,10> 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<boardSize.x;i++) {
|
||||
|
3
Board.h
3
Board.h
@ -41,8 +41,9 @@ class Board{
|
||||
float maxGravity;
|
||||
float spawnRate;
|
||||
float launchSpd;
|
||||
float launchTime; //How much time a stack rises before beginning descent.
|
||||
Board();
|
||||
Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float spawnRate,std::array<int,10> colorRates,Renderable&tileset);
|
||||
Board(vi2d boardSize,float gravity,float maxGravity,float launchSpd,float launchTime,float spawnRate,std::array<int,10> colorRates,Renderable&tileset);
|
||||
void spawnBlock(int col);
|
||||
void addClump(BlockClump&c);
|
||||
std::vector<Block>&getBlocks(int col);
|
||||
|
Binary file not shown.
13
main.cpp
13
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;i<gameBoard.getBlockClumps().size();i++){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||
c.vspeed+=gameBoard.gravity;
|
||||
if (c.launchTime>0) {
|
||||
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<std::pair<int,int>>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<int,int>&info:matchedBlockIDs) {
|
||||
Block&b=gameBoard.getBlocks(info.first)[info.second];
|
||||
|
Loading…
x
Reference in New Issue
Block a user