Fix weapon switching
This commit is contained in:
		
							parent
							
								
									e50d8701fd
								
							
						
					
					
						commit
						126a9e116a
					
				| @ -124,17 +124,22 @@ void ANakatomiCharacter::RemoveWeaponFromInventory(int i) | |||||||
| 	WeaponInventory[i]->Destroy(); | 	WeaponInventory[i]->Destroy(); | ||||||
| 	WeaponInventory.RemoveAt(i); | 	WeaponInventory.RemoveAt(i); | ||||||
| 
 | 
 | ||||||
| 	if (WeaponInventory.Num() == 0) | 	 | ||||||
|  | 	if (WeaponInventory.Num() == 1) | ||||||
|  | 	{ | ||||||
|  | 		SelectInventorySlot(0); | ||||||
|  | 	} | ||||||
|  | 	else if (WeaponInventory.Num() == 0) | ||||||
| 	{ | 	{ | ||||||
| 		CurrentInventorySlot = -1; | 		CurrentInventorySlot = -1; | ||||||
| 	} | 	} | ||||||
| 	else if (int index = WeaponInventory.Find(CurrentWeapon) == INDEX_NONE) | 	else if (CurrentInventorySlot == 0) | ||||||
| 	{ | 	{ | ||||||
| 		SetCurrentWeapon(WeaponInventory[CurrentInventorySlot % WeaponInventory.Num()]); | 		SelectInventorySlot(0); | ||||||
| 	} | 	} | ||||||
| 	else | 	else | ||||||
| 	{ | 	{ | ||||||
| 		CurrentInventorySlot = index; | 		SelectInventorySlot(i-1); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -142,13 +147,13 @@ void ANakatomiCharacter::RemoveWeaponFromInventory(AWeapon* weapon) | |||||||
| { | { | ||||||
| 	if (int index = WeaponInventory.Find(weapon) != INDEX_NONE) | 	if (int index = WeaponInventory.Find(weapon) != INDEX_NONE) | ||||||
| 	{ | 	{ | ||||||
| 		RemoveWeaponFromInventory(index - 1); | 		RemoveWeaponFromInventory(index); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ANakatomiCharacter::RemoveCurrentWeaponFromInventory() | void ANakatomiCharacter::RemoveCurrentWeaponFromInventory() | ||||||
| { | { | ||||||
| 	RemoveWeaponFromInventory(CurrentWeapon); | 	RemoveWeaponFromInventory(CurrentInventorySlot); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ANakatomiCharacter::AddWeaponToInventory(TSubclassOf<class AWeapon> weapon) | void ANakatomiCharacter::AddWeaponToInventory(TSubclassOf<class AWeapon> weapon) | ||||||
|  | |||||||
| @ -250,7 +250,8 @@ void APlayerCharacter::EndJumpCallback(const FInputActionInstance& Instance) | |||||||
| 
 | 
 | ||||||
| void APlayerCharacter::BeginFireCallback(const FInputActionInstance& Instance) | void APlayerCharacter::BeginFireCallback(const FInputActionInstance& Instance) | ||||||
| { | { | ||||||
| 	if (CurrentWeapon == nullptr || CurrentWeapon->GetCurrentWeaponStatus()->GetValue() != Idle || (IsSprinting && GetVelocity().Length() > 500.0f)) | 	if (CurrentWeapon == nullptr || CurrentWeapon->GetCurrentWeaponStatus()->GetValue() != Idle || | ||||||
|  | 		(IsSprinting && GetVelocity().Length() > 500.0f)) | ||||||
| 	{ | 	{ | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| @ -768,10 +769,13 @@ void APlayerCharacter::ThrowWeapon() | |||||||
| 
 | 
 | ||||||
| 	TSubclassOf<AWeaponThrowable> WeaponThrowableTemplate = CurrentWeapon->GetWeaponThrowableTemplate(); | 	TSubclassOf<AWeaponThrowable> WeaponThrowableTemplate = CurrentWeapon->GetWeaponThrowableTemplate(); | ||||||
| 
 | 
 | ||||||
|  | 	if (WeaponThrowableTemplate) | ||||||
|  | 	{ | ||||||
| 		AWeaponThrowable* Throwable = GetWorld()->SpawnActor<AWeaponThrowable>( | 		AWeaponThrowable* Throwable = GetWorld()->SpawnActor<AWeaponThrowable>( | ||||||
| 			WeaponThrowableTemplate, SpawnLocation, FRotator::ZeroRotator); | 			WeaponThrowableTemplate, SpawnLocation, FRotator::ZeroRotator); | ||||||
| 
 | 
 | ||||||
| 		Throwable->SetWeaponSkeletalMesh(GetCurrentWeapon()->GetSkeletalMesh()); | 		Throwable->SetWeaponSkeletalMesh(GetCurrentWeapon()->GetSkeletalMesh()); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void APlayerCharacter::ThrowExplosiveCallback() | void APlayerCharacter::ThrowExplosiveCallback() | ||||||
| @ -794,7 +798,7 @@ void APlayerCharacter::ThrowExplosive() | |||||||
| 	SpawnLocation += (25.0f * GetActorForwardVector()); | 	SpawnLocation += (25.0f * GetActorForwardVector()); | ||||||
| 	SpawnLocation.Z += BoxExtent.Z; | 	SpawnLocation.Z += BoxExtent.Z; | ||||||
| 	 | 	 | ||||||
| 	GetWorld()->SpawnActor<AThrowable>(ThrowableInventory.Pop(), SpawnLocation, FRotator::ZeroRotator); | 	GetWorld()->SpawnActor<AThrowable>(ThrowableInventory[GetCurrentInventorySlot()], SpawnLocation, FRotator::ZeroRotator); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AThrowable* APlayerCharacter::ThrowThrowable() | AThrowable* APlayerCharacter::ThrowThrowable() | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user