generated from sigonasr2/CPlusPlusProjectTemplate
Cleaned up update functions
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
4010b52c5b
commit
9dc1ec3517
Binary file not shown.
10
Meteos.h
10
Meteos.h
@ -23,5 +23,15 @@ class Meteos : public olc::PixelGameEngine{
|
||||
void handleInput();
|
||||
void drawGame(float fElapsedTime,bool debugView);
|
||||
bool OnUserUpdate(float fElapsedTime)override;
|
||||
void spawnBlocks(float fElapsedTime);
|
||||
void handleBlockGravity(float fElapsedTime);
|
||||
void matchBlocks();
|
||||
void matchFlyingBlockClumps();
|
||||
void cleanupBlockClumps();
|
||||
void matchGroundedBlocks();
|
||||
void cleanupBlocks();
|
||||
void handleWarningLevels(float fElapsedTime);
|
||||
void validateSelectedBlock();
|
||||
void handleComboAnimations();
|
||||
};
|
||||
#endif
|
53
main.cpp
53
main.cpp
@ -25,7 +25,7 @@ bool Meteos::OnUserCreate()
|
||||
coinFlip=std::uniform_int_distribution<>(0, 1);
|
||||
comboOverlayOffset=std::uniform_int_distribution<>(-16,16);
|
||||
|
||||
gameBoard=Board({10,14},0.02f,0.04f,1.2f,0.04f,0.4f,{-0.2f,-1.5f,-2.f,-2.5f,-4.f},1.7f,2.0f,0.2f,{3,3,1,2,3,0,0,0,0,0},
|
||||
gameBoard=Board({10,14},0.02f,0.04f,1.2f,0.04f,0.4f,{-1.f,-1.5f,-2.f,-2.5f,-4.f},1.7f,2.0f,0.2f,{3,3,1,2,3,0,0,0,0,0},
|
||||
60*10,SPRITES["blocks_test.png"]);
|
||||
|
||||
return true;
|
||||
@ -118,12 +118,15 @@ void Meteos::handleInput(){
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::updateGame(float fElapsedTime){
|
||||
void Meteos::spawnBlocks(float fElapsedTime){
|
||||
lastBlockSpawn+=fElapsedTime;
|
||||
if (lastBlockSpawn>=gameBoard.spawnRate){
|
||||
lastBlockSpawn-=gameBoard.spawnRate;
|
||||
//gameBoard.spawnBlock(randBlockPos(gen));
|
||||
gameBoard.spawnBlock(randBlockPos(gen));
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::handleBlockGravity(float fElapsedTime){
|
||||
for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||
if (c.launchTime>0) {
|
||||
@ -262,6 +265,9 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
c.landTime=0;
|
||||
nextClump:;
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::matchFlyingBlockClumps(){
|
||||
for (int g=0;g<gameBoard.getBlockClumps().size();g++){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[g];
|
||||
std::vector<BlockMatchingInfo>matchedBlockIDs;
|
||||
@ -505,6 +511,9 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
//std::cout<<"Combo value is "<<c.combo<<std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::cleanupBlockClumps(){
|
||||
for (int g=0;g<gameBoard.getBlockClumps().size();g++){
|
||||
BlockClump&c=gameBoard.getBlockClumps()[g];
|
||||
for (int i=0;i<c.getBlocks().size();i++){
|
||||
@ -514,6 +523,9 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::matchGroundedBlocks(){
|
||||
std::vector<BlockMatchingInfo>matchedBlockIDs; //Col followed by index
|
||||
for (int i=0;i<gameBoard.boardSize.x;i++){
|
||||
for (Block&b:gameBoard.getBlocks(i)) {
|
||||
@ -762,6 +774,15 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
comboDisplayList.push_back({baseBlockPos+randomOffset,gameBoard.getBlockClumps()[gameBoard.getBlockClumps().size()-1].combo});
|
||||
//std::cout<<"Combo value is "<<gameBoard.getBlockClumps()[gameBoard.getBlockClumps().size()-1].combo<<std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::matchBlocks(){
|
||||
matchFlyingBlockClumps();
|
||||
cleanupBlockClumps();
|
||||
matchGroundedBlocks();
|
||||
}
|
||||
|
||||
void Meteos::cleanupBlocks(){
|
||||
for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){ //Resolve BlockClump movements.
|
||||
BlockClump&c=gameBoard.getBlockClumps()[i];
|
||||
for (int j=c.getBlocks().size()-1;j>=0;j--){
|
||||
@ -770,7 +791,6 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
if (c.vspeed<0&&c.getBlockPosition(b).y<0||b.markedForRemoval){
|
||||
std::cout<<"Removed block @"<<b.pos<<" from clump "<<i<<std::endl;
|
||||
c.removeBlock(j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
c.y+=c.vspeed;
|
||||
@ -780,6 +800,9 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::handleWarningLevels(float fElapsedTime){
|
||||
bool noWarning=true;
|
||||
for (int i=0;i<gameBoard.boardSize.x;i++){
|
||||
if (gameBoard.getBlocks(i).size()>=gameBoard.boardSize.y){
|
||||
@ -812,23 +835,27 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
}
|
||||
}
|
||||
gameBoard.warningLevel=0;
|
||||
goto invalidatedExit;
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::validateSelectedBlock(){
|
||||
//Invalidate the selected block if something is strange about it.
|
||||
if (gameBoard.selectedBlock.col!=-1){
|
||||
if (gameBoard.selectedBlock.c!=-1){
|
||||
if (!(gameBoard.selectedBlock.c<gameBoard.getBlockClumps().size()&&gameBoard.selectedBlock.ind<gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks().size()&&gameBoard.getBlockClumps()[gameBoard.selectedBlock.c].getBlocks()[gameBoard.selectedBlock.ind].pos.x/12==gameBoard.selectedBlock.col)){
|
||||
gameBoard.selectedBlock={-1};
|
||||
goto invalidatedExit;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (!(gameBoard.selectedBlock.ind<gameBoard.getBlocks(gameBoard.selectedBlock.col).size())){
|
||||
gameBoard.selectedBlock={-1};
|
||||
goto invalidatedExit;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
invalidatedExit:
|
||||
}
|
||||
|
||||
void Meteos::handleComboAnimations(){
|
||||
for (int i=comboDisplayList.size()-1;i>=0;i--){
|
||||
ComboOverlay&c=comboDisplayList[i];
|
||||
c.lifetime++;
|
||||
@ -839,6 +866,16 @@ void Meteos::updateGame(float fElapsedTime){
|
||||
}
|
||||
}
|
||||
|
||||
void Meteos::updateGame(float fElapsedTime){
|
||||
spawnBlocks(fElapsedTime);
|
||||
handleBlockGravity(fElapsedTime);
|
||||
matchBlocks();
|
||||
cleanupBlocks();
|
||||
handleWarningLevels(fElapsedTime);
|
||||
validateSelectedBlock();
|
||||
handleComboAnimations();
|
||||
}
|
||||
|
||||
void Meteos::drawGame(float fElapsedTime,bool debugView){
|
||||
Clear(Pixel(32,32,255));
|
||||
for (int x=-1;x<=gameBoard.boardSize.x;x++){
|
||||
|
Loading…
x
Reference in New Issue
Block a user