Add Regen Health After 5 Seconds for Placeholder Regen
This commit is contained in:
parent
b0229af645
commit
9f931693b2
@ -17,11 +17,11 @@ public:
|
||||
// Sets default values for this character's properties
|
||||
AAICharacter();
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Stats")
|
||||
float CurrentHealth = 100.0f;
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats")
|
||||
float MaxHealth = 100.0f;
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats")
|
||||
float DefaultHealth = 100.0f;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Profile")
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "EnhancedInputSubsystems.h"
|
||||
#include "InteractionInterface.h"
|
||||
#include "AI/EnemyCharacter.h"
|
||||
#include "Engine/DamageEvents.h"
|
||||
#include "GameFramework/CharacterMovementComponent.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
#include "GameFramework/MovementComponent.h"
|
||||
@ -84,6 +85,21 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime)
|
||||
}
|
||||
}
|
||||
|
||||
void AEndlessVendettaCharacter::RegenHealth()
|
||||
{
|
||||
Heal(10);
|
||||
if (GetWorld()->GetTimerManager().GetTimerRate(RegenHealthTimerHandle) > 1.0f)
|
||||
{
|
||||
GetWorld()->GetTimerManager().SetTimer(RegenHealthTimerHandle, this, &AEndlessVendettaCharacter::RegenHealth, 1.0f, true);
|
||||
}
|
||||
if (CurrentHealth >= MaxHealth) GetWorld()->GetTimerManager().ClearTimer(RegenHealthTimerHandle);
|
||||
}
|
||||
|
||||
void AEndlessVendettaCharacter::Heal(const float Amount)
|
||||
{
|
||||
CurrentHealth += FMath::Clamp(Amount, 0, MaxHealth);
|
||||
}
|
||||
|
||||
void AEndlessVendettaCharacter::WeaponPickUpSystem()
|
||||
{
|
||||
FHitResult OutHit;
|
||||
@ -150,11 +166,11 @@ void AEndlessVendettaCharacter::Interact()
|
||||
QueryParams.AddIgnoredActor(this);
|
||||
FVector LT_Start = FirstPersonCameraComponent->GetComponentLocation();
|
||||
FVector LT_End = LT_Start + (FirstPersonCameraComponent->GetForwardVector() * InteractionRange);
|
||||
if(IsValid(PrimaryWeapon))
|
||||
if (IsValid(PrimaryWeapon))
|
||||
{
|
||||
QueryParams.AddIgnoredActor(PrimaryWeapon);
|
||||
}
|
||||
if(IsValid(SecondaryWeapon))
|
||||
if (IsValid(SecondaryWeapon))
|
||||
{
|
||||
QueryParams.AddIgnoredActor(SecondaryWeapon);
|
||||
}
|
||||
@ -183,6 +199,12 @@ float AEndlessVendettaCharacter::TakeDamage(const float DamageAmount, FDamageEve
|
||||
{
|
||||
CurrentHealth = 0;
|
||||
UE_LOG(LogTemp, Warning, TEXT("Player is dead"));
|
||||
UGameplayStatics::OpenLevel(this, FName(*GetWorld()->GetName()), false);
|
||||
}
|
||||
if (!GetWorld()->GetTimerManager().IsTimerActive(RegenHealthTimerHandle))
|
||||
{
|
||||
GetWorld()->GetTimerManager().ClearTimer(RegenHealthTimerHandle);
|
||||
GetWorld()->GetTimerManager().SetTimer(RegenHealthTimerHandle, this, &AEndlessVendettaCharacter::RegenHealth, 5.0f, true);
|
||||
}
|
||||
|
||||
return Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);
|
||||
@ -213,7 +235,7 @@ void AEndlessVendettaCharacter::ToggleRecon()
|
||||
|
||||
void AEndlessVendettaCharacter::ToggleCombat()
|
||||
{
|
||||
if(!GadgetManager->IsValidCombatGadget()) return;
|
||||
if (!GadgetManager->IsValidCombatGadget()) return;
|
||||
|
||||
if (IsValid(PrimaryWeapon)) EquipPrimary();
|
||||
if (IsValid(SecondaryWeapon)) EquipSecondary();
|
||||
@ -368,14 +390,14 @@ void AEndlessVendettaCharacter::StopGunRightClick()
|
||||
{
|
||||
bIsScoped = false;
|
||||
PrimaryWeapon->WeaponScopedFire();
|
||||
PrimaryWeapon->SetActorRelativeLocation(FVector(0,0,0));
|
||||
PrimaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0));
|
||||
this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
|
||||
}
|
||||
if (IsValid(SecondaryWeapon))
|
||||
{
|
||||
bIsScoped = false;
|
||||
SecondaryWeapon->WeaponScopedFire();
|
||||
SecondaryWeapon->SetActorRelativeLocation(FVector(0,0,0));
|
||||
SecondaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0));
|
||||
this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
|
||||
}
|
||||
}
|
||||
@ -395,6 +417,11 @@ void AEndlessVendettaCharacter::GunReload()
|
||||
}
|
||||
|
||||
|
||||
void AEndlessVendettaCharacter::DamagePlayer(const float Damage)
|
||||
{
|
||||
TakeDamage(Damage, FDamageEvent(), nullptr, nullptr);
|
||||
}
|
||||
|
||||
void AEndlessVendettaCharacter::Move(const FInputActionValue& Value)
|
||||
{
|
||||
// input is a Vector2D
|
||||
@ -444,4 +471,3 @@ bool AEndlessVendettaCharacter::UpdateGadgetType(TSubclassOf<AGadgetBase> NewGad
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -74,11 +74,11 @@ class AEndlessVendettaCharacter : public ACharacter
|
||||
public:
|
||||
AEndlessVendettaCharacter();
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Stats")
|
||||
float CurrentHealth = 100.0f;
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats")
|
||||
float MaxHealth = 100.0f;
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Stats")
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats")
|
||||
float DefaultHealth = 100.0f;
|
||||
|
||||
protected:
|
||||
@ -88,6 +88,9 @@ protected:
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Gadget")
|
||||
TSubclassOf<AGadgetManager> GadgetManagerClass;
|
||||
|
||||
void RegenHealth();
|
||||
FTimerHandle RegenHealthTimerHandle;
|
||||
void Heal(const float Amount);
|
||||
|
||||
public:
|
||||
int Money = 2000;
|
||||
@ -143,6 +146,9 @@ public:
|
||||
UPROPERTY(EditAnywhere, Category = "Dont Touch")
|
||||
bool bIsScoped;
|
||||
|
||||
UFUNCTION(Exec)
|
||||
void DamagePlayer(const float Damage);
|
||||
|
||||
protected:
|
||||
/** Called for movement input */
|
||||
void Move(const FInputActionValue& Value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user