Added reload functionality for all current and future weapons
This commit is contained in:
parent
3c75d16e4b
commit
0e401a6f62
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:ff90caf01f6ea20dccd612ea5629215ce5c5a4a63e4da2ec242cabf9000bd6c6
|
oid sha256:a408fa1c344f5612f1ed59bfeefbd99f2fc986c49f66bf42e849db73e65fdc2e
|
||||||
size 42353
|
size 42307
|
||||||
|
BIN
EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Reload.uasset
(Stored with Git LFS)
Normal file
BIN
EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Reload.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:6a0af94b654f58c85c8b4453fa211608ecc7bc67b9c82e2e3768814e906babcd
|
oid sha256:ff3f732c27d0c0064f659482af85f116bc5eb967b29d3ca42bdc2324c3662cd8
|
||||||
size 16334
|
size 16910
|
||||||
|
@ -91,6 +91,9 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent*
|
|||||||
EnhancedInputComponent->BindAction(TapShootAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::FireCaller);
|
EnhancedInputComponent->BindAction(TapShootAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::FireCaller);
|
||||||
EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::GunRightClick);
|
EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::GunRightClick);
|
||||||
EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Completed, this, &AEndlessVendettaCharacter::StopGunRightClick);
|
EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Completed, this, &AEndlessVendettaCharacter::StopGunRightClick);
|
||||||
|
|
||||||
|
//Weapon Reloading
|
||||||
|
EnhancedInputComponent->BindAction(GunReloadAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::GunReload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,6 +259,18 @@ void AEndlessVendettaCharacter::StopGunRightClick()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AEndlessVendettaCharacter::GunReload()
|
||||||
|
{
|
||||||
|
if (IsValid(PrimaryWeapon))
|
||||||
|
{
|
||||||
|
PrimaryWeapon->WeaponReload();
|
||||||
|
}
|
||||||
|
if (IsValid(SecondaryWeapon))
|
||||||
|
{
|
||||||
|
SecondaryWeapon->WeaponReload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AEndlessVendettaCharacter::Move(const FInputActionValue& Value)
|
void AEndlessVendettaCharacter::Move(const FInputActionValue& Value)
|
||||||
{
|
{
|
||||||
|
@ -62,6 +62,9 @@ class AEndlessVendettaCharacter : public ACharacter
|
|||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
|
||||||
class UInputAction* GunAimInAction;
|
class UInputAction* GunAimInAction;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
|
||||||
|
class UInputAction* GunReloadAction;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AEndlessVendettaCharacter();
|
AEndlessVendettaCharacter();
|
||||||
|
|
||||||
@ -109,6 +112,9 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
||||||
void StopGunRightClick();
|
void StopGunRightClick();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
||||||
|
void GunReload();
|
||||||
|
|
||||||
UArrowComponent* ScopedLocationArrow;
|
UArrowComponent* ScopedLocationArrow;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, Category = "Dont Touch")
|
UPROPERTY(EditAnywhere, Category = "Dont Touch")
|
||||||
|
@ -44,6 +44,10 @@ void ABaseWeaponClass::BeginPlay()
|
|||||||
originalMaxAngleLeft = recoilMaxAngleLeft;
|
originalMaxAngleLeft = recoilMaxAngleLeft;
|
||||||
originalMaxAngleRight = recoilMaxAngleRight;
|
originalMaxAngleRight = recoilMaxAngleRight;
|
||||||
originalMinMultiplier = recoilMinMultiplier;
|
originalMinMultiplier = recoilMinMultiplier;
|
||||||
|
|
||||||
|
currentAmmoCount = MagazineSize;
|
||||||
|
|
||||||
|
UE_LOG(LogTemp, Display, TEXT("crnnt ammo: %d"), MagazineSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame
|
// Called every frame
|
||||||
@ -134,7 +138,7 @@ void ABaseWeaponClass::CancelFire()
|
|||||||
|
|
||||||
void ABaseWeaponClass::Fire()
|
void ABaseWeaponClass::Fire()
|
||||||
{
|
{
|
||||||
if(MagazineSize > 0)
|
if(currentAmmoCount > 0)
|
||||||
{
|
{
|
||||||
//do damage fallof based off distance
|
//do damage fallof based off distance
|
||||||
FHitResult outHit;
|
FHitResult outHit;
|
||||||
@ -153,8 +157,8 @@ void ABaseWeaponClass::Fire()
|
|||||||
//Debug line to see where the trace hit
|
//Debug line to see where the trace hit
|
||||||
DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 5.0f, 0U, 2.5f);
|
DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 5.0f, 0U, 2.5f);
|
||||||
playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);
|
playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);
|
||||||
MagazineSize -= 1;
|
currentAmmoCount -= 1;
|
||||||
UE_LOG(LogTemp, Display, TEXT("Ammo Count: %d"), MagazineSize);
|
UE_LOG(LogTemp, Display, TEXT("Ammo Count: %d"), currentAmmoCount);
|
||||||
GenerateRecoilVector();
|
GenerateRecoilVector();
|
||||||
ClickDetectionTimer();
|
ClickDetectionTimer();
|
||||||
if (outHit.bBlockingHit)
|
if (outHit.bBlockingHit)
|
||||||
@ -162,9 +166,9 @@ void ABaseWeaponClass::Fire()
|
|||||||
UE_LOG(LogTemp, Display, TEXT("hit item: %s"), *outHit.GetActor()->GetName());
|
UE_LOG(LogTemp, Display, TEXT("hit item: %s"), *outHit.GetActor()->GetName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(MagazineSize <= 0)
|
else if(currentAmmoCount <= 0)
|
||||||
{
|
{
|
||||||
UE_LOG(LogTemp, Display, TEXT("No ammo, Ammo count: %d"), MagazineSize);
|
UE_LOG(LogTemp, Display, TEXT("No ammo, Ammo count: %d"), currentAmmoCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -188,4 +192,13 @@ void ABaseWeaponClass::WeaponScopedFire()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABaseWeaponClass::WeaponReload()
|
||||||
|
{
|
||||||
|
if(MagazineSize > currentAmmoCount)
|
||||||
|
{
|
||||||
|
UE_LOG(LogTemp, Display, TEXT("Weapon Reloading: mag size: %d"), MagazineSize);
|
||||||
|
currentAmmoCount = MagazineSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,6 +110,9 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
||||||
void WeaponScopedFire();
|
void WeaponScopedFire();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category = "Weapons")
|
||||||
|
void WeaponReload();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
UArrowComponent* GunStartArrow;
|
UArrowComponent* GunStartArrow;
|
||||||
@ -122,4 +125,6 @@ private:
|
|||||||
float originalMaxAngleRight;
|
float originalMaxAngleRight;
|
||||||
float originalMinMultiplier;
|
float originalMinMultiplier;
|
||||||
|
|
||||||
|
int currentAmmoCount;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user