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