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 handleInput(); | ||||||
|     void drawGame(float fElapsedTime,bool debugView); |     void drawGame(float fElapsedTime,bool debugView); | ||||||
|     bool OnUserUpdate(float fElapsedTime)override; |     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 | #endif | ||||||
							
								
								
									
										53
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								main.cpp
									
									
									
									
									
								
							| @ -25,7 +25,7 @@ bool Meteos::OnUserCreate() | |||||||
|     coinFlip=std::uniform_int_distribution<>(0, 1); |     coinFlip=std::uniform_int_distribution<>(0, 1); | ||||||
| 	comboOverlayOffset=std::uniform_int_distribution<>(-16,16); | 	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"]); | 		60*10,SPRITES["blocks_test.png"]); | ||||||
| 
 | 
 | ||||||
| 	return true; | 	return true; | ||||||
| @ -118,12 +118,15 @@ void Meteos::handleInput(){ | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Meteos::updateGame(float fElapsedTime){ | void Meteos::spawnBlocks(float fElapsedTime){ | ||||||
| 	lastBlockSpawn+=fElapsedTime; | 	lastBlockSpawn+=fElapsedTime; | ||||||
| 	if (lastBlockSpawn>=gameBoard.spawnRate){ | 	if (lastBlockSpawn>=gameBoard.spawnRate){ | ||||||
| 		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--){ | 	for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){ | ||||||
| 		BlockClump&c=gameBoard.getBlockClumps()[i]; | 		BlockClump&c=gameBoard.getBlockClumps()[i]; | ||||||
| 		if (c.launchTime>0) { | 		if (c.launchTime>0) { | ||||||
| @ -262,6 +265,9 @@ void Meteos::updateGame(float fElapsedTime){ | |||||||
| 		c.landTime=0; | 		c.landTime=0; | ||||||
| 		nextClump:; | 		nextClump:; | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Meteos::matchFlyingBlockClumps(){ | ||||||
| 	for (int g=0;g<gameBoard.getBlockClumps().size();g++){ | 	for (int g=0;g<gameBoard.getBlockClumps().size();g++){ | ||||||
| 		BlockClump&c=gameBoard.getBlockClumps()[g]; | 		BlockClump&c=gameBoard.getBlockClumps()[g]; | ||||||
| 		std::vector<BlockMatchingInfo>matchedBlockIDs; | 		std::vector<BlockMatchingInfo>matchedBlockIDs; | ||||||
| @ -505,6 +511,9 @@ void Meteos::updateGame(float fElapsedTime){ | |||||||
| 			//std::cout<<"Combo value is "<<c.combo<<std::endl;
 | 			//std::cout<<"Combo value is "<<c.combo<<std::endl;
 | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Meteos::cleanupBlockClumps(){ | ||||||
| 	for (int g=0;g<gameBoard.getBlockClumps().size();g++){ | 	for (int g=0;g<gameBoard.getBlockClumps().size();g++){ | ||||||
| 		BlockClump&c=gameBoard.getBlockClumps()[g]; | 		BlockClump&c=gameBoard.getBlockClumps()[g]; | ||||||
| 		for (int i=0;i<c.getBlocks().size();i++){ | 		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
 | 	std::vector<BlockMatchingInfo>matchedBlockIDs; //Col followed by index
 | ||||||
| 	for (int i=0;i<gameBoard.boardSize.x;i++){ | 	for (int i=0;i<gameBoard.boardSize.x;i++){ | ||||||
| 		for (Block&b:gameBoard.getBlocks(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}); | 		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;
 | 		//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.
 | 	for (int i=gameBoard.getBlockClumps().size()-1;i>=0;i--){ //Resolve BlockClump movements.
 | ||||||
| 		BlockClump&c=gameBoard.getBlockClumps()[i]; | 		BlockClump&c=gameBoard.getBlockClumps()[i]; | ||||||
| 		for (int j=c.getBlocks().size()-1;j>=0;j--){ | 		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){ | 			if (c.vspeed<0&&c.getBlockPosition(b).y<0||b.markedForRemoval){ | ||||||
| 				std::cout<<"Removed block @"<<b.pos<<" from clump "<<i<<std::endl; | 				std::cout<<"Removed block @"<<b.pos<<" from clump "<<i<<std::endl; | ||||||
| 				c.removeBlock(j); | 				c.removeBlock(j); | ||||||
| 				break; |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		c.y+=c.vspeed; | 		c.y+=c.vspeed; | ||||||
| @ -780,6 +800,9 @@ void Meteos::updateGame(float fElapsedTime){ | |||||||
| 			continue; | 			continue; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Meteos::handleWarningLevels(float fElapsedTime){ | ||||||
| 	bool noWarning=true; | 	bool noWarning=true; | ||||||
| 	for (int i=0;i<gameBoard.boardSize.x;i++){ | 	for (int i=0;i<gameBoard.boardSize.x;i++){ | ||||||
| 		if (gameBoard.getBlocks(i).size()>=gameBoard.boardSize.y){ | 		if (gameBoard.getBlocks(i).size()>=gameBoard.boardSize.y){ | ||||||
| @ -812,23 +835,27 @@ void Meteos::updateGame(float fElapsedTime){ | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		gameBoard.warningLevel=0; | 		gameBoard.warningLevel=0; | ||||||
| 		goto invalidatedExit; |  | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Meteos::validateSelectedBlock(){ | ||||||
| 	//Invalidate the selected block if something is strange about it.
 | 	//Invalidate the selected block if something is strange about it.
 | ||||||
| 	if (gameBoard.selectedBlock.col!=-1){ | 	if (gameBoard.selectedBlock.col!=-1){ | ||||||
| 		if (gameBoard.selectedBlock.c!=-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)){ | 			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}; | 				gameBoard.selectedBlock={-1}; | ||||||
| 				goto invalidatedExit; | 				return; | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			if (!(gameBoard.selectedBlock.ind<gameBoard.getBlocks(gameBoard.selectedBlock.col).size())){ | 			if (!(gameBoard.selectedBlock.ind<gameBoard.getBlocks(gameBoard.selectedBlock.col).size())){ | ||||||
| 				gameBoard.selectedBlock={-1}; | 				gameBoard.selectedBlock={-1}; | ||||||
| 				goto invalidatedExit; | 				return; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	invalidatedExit: | } | ||||||
|  | 
 | ||||||
|  | void Meteos::handleComboAnimations(){ | ||||||
| 	for (int i=comboDisplayList.size()-1;i>=0;i--){ | 	for (int i=comboDisplayList.size()-1;i>=0;i--){ | ||||||
| 		ComboOverlay&c=comboDisplayList[i]; | 		ComboOverlay&c=comboDisplayList[i]; | ||||||
| 		c.lifetime++; | 		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){ | void Meteos::drawGame(float fElapsedTime,bool debugView){ | ||||||
| 	Clear(Pixel(32,32,255)); | 	Clear(Pixel(32,32,255)); | ||||||
| 	for (int x=-1;x<=gameBoard.boardSize.x;x++){ | 	for (int x=-1;x<=gameBoard.boardSize.x;x++){ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user