Newer
Older
SkyFrontier-Project-IADE-UE4-3D / Source / SkyFrontier / Private / HealthSystem.cpp
@Genexuz Genexuz on 14 Dec 2022 1 KB medo
#include "HealthSystem.h"
#include "Net/UnrealNetwork.h"
#include "Engine/Engine.h"

UHealthSystem::UHealthSystem()
{
	PrimaryComponentTick.bCanEverTick = false;
	PrimaryComponentTick.bStartWithTickEnabled = false;
}

void UHealthSystem::BeginPlay()
{
	Super::BeginPlay();
	Health = MaxHealth;
	Shield = 0;
}

float UHealthSystem::GetHealth() const
{
	return Health;
}

float UHealthSystem::GetMaxHealth() const
{
	return MaxHealth;
}

float UHealthSystem::GetShield() const
{
	return Shield;
}

void UHealthSystem::TakeDamage(const float Amount)
{
	if (Amount > 0)
	{
		Health -= Amount;

		OnDamageTakenEvent.Broadcast(Amount);
	}
}

void UHealthSystem::RecoverHealth(const float Amount)
{
	if (Amount > 0)
	{
		Health += Amount;
		if (Health >= MaxHealth)
		{
			Health = MaxHealth;
		}

		OnDamageHealedEvent.Broadcast(Amount);
	}
}

void UHealthSystem::ReceiveShield(const float Amount)
{
	if (Amount >= 0)
	{
		Shield += Amount;

		OnShieldReceiveEvent.Broadcast(Amount);
	}
}

void UHealthSystem::RemoveShield(const float Amount)
{
	if (Amount >= 0)
	{
		Shield -= Amount;

		if (Shield < 0)
		{
			Shield = 0;
		}
		OnShieldReceiveEvent.Broadcast(Amount);
	}
}