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…
Reference in New Issue