Checfk if all keys have been collected in LevelEndTriggerVolume
This commit is contained in:
		
							parent
							
								
									cffef34d9b
								
							
						
					
					
						commit
						9dc2fff2ed
					
				| @ -24,16 +24,20 @@ void ALevelEndTriggerVolume::OnOverlapBegin(UPrimitiveComponent* OverlappedCompo | |||||||
| 								   UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, | 								   UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, | ||||||
| 								   const FHitResult& SweepResult) | 								   const FHitResult& SweepResult) | ||||||
| { | { | ||||||
| 	// TODO: Add extra functionality!
 | 	UNakatomiGameInstance* gameInstance = Cast<UNakatomiGameInstance>(UGameplayStatics::GetGameInstance(GetWorld())); | ||||||
| 	if (Cast<APlayerCharacter>(OtherActor)) | 	if (gameInstance) | ||||||
|  | 	{ | ||||||
|  | 		int CollectedLevelKeysCount = gameInstance->GetCurrentLevelManager()->GetCollectedLevelKeysCount(); | ||||||
|  | 		int InitialLevelKeysCount = gameInstance->GetCurrentLevelManager()->GetInitialLevelKeysCount(); | ||||||
|  | 		 | ||||||
|  | 		// TODO: Add extra checks!
 | ||||||
|  | 		if (Cast<APlayerCharacter>(OtherActor) && CollectedLevelKeysCount == InitialLevelKeysCount) | ||||||
| 		{ | 		{ | ||||||
| 			GetCollisionComponent()->OnComponentBeginOverlap.Clear(); | 			GetCollisionComponent()->OnComponentBeginOverlap.Clear(); | ||||||
| 
 | 
 | ||||||
| 		if (auto gameInstance = Cast<UNakatomiGameInstance>(UGameplayStatics::GetGameInstance(GetWorld()))) |  | ||||||
| 		{ |  | ||||||
| 			gameInstance->GetCurrentLevelManager()->LoadNextLevel(); | 			gameInstance->GetCurrentLevelManager()->LoadNextLevel(); | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 			this->Destroy(); | 			this->Destroy(); | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -29,10 +29,20 @@ void UNakatomiLevelManager::LoadNextLevel() | |||||||
| 
 | 
 | ||||||
| void UNakatomiLevelManager::IncrementInitialLevelKeys() | void UNakatomiLevelManager::IncrementInitialLevelKeys() | ||||||
| { | { | ||||||
| 	LevelKeys++; | 	InitialLevelKeys++; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void UNakatomiLevelManager::IncrementCollectedLevelKeys() | void UNakatomiLevelManager::IncrementCollectedLevelKeys() | ||||||
| { | { | ||||||
| 	CollectedLevelKeys++; | 	CollectedLevelKeys++; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | int UNakatomiLevelManager::GetInitialLevelKeysCount() | ||||||
|  | { | ||||||
|  | 	return InitialLevelKeys; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int UNakatomiLevelManager::GetCollectedLevelKeysCount() | ||||||
|  | { | ||||||
|  | 	return CollectedLevelKeys; | ||||||
|  | } | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ private: | |||||||
| 	UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) | 	UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) | ||||||
| 	TSoftObjectPtr<UWorld> NextLevel; | 	TSoftObjectPtr<UWorld> NextLevel; | ||||||
| 
 | 
 | ||||||
| 	int LevelKeys = 0; | 	int InitialLevelKeys = 0; | ||||||
| 
 | 
 | ||||||
| 	int CollectedLevelKeys = 0; | 	int CollectedLevelKeys = 0; | ||||||
| 	 | 	 | ||||||
| @ -33,6 +33,12 @@ public: | |||||||
| 	UFUNCTION() | 	UFUNCTION() | ||||||
| 	void IncrementCollectedLevelKeys(); | 	void IncrementCollectedLevelKeys(); | ||||||
| 
 | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	int GetInitialLevelKeysCount(); | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	int GetCollectedLevelKeysCount(); | ||||||
|  | 	 | ||||||
| private: | private: | ||||||
| 
 | 
 | ||||||
| 	UFUNCTION() | 	UFUNCTION() | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user