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