Newer
Older
SkyFrontier-Project-IADE-UE4-3D / Source / SkyFrontier / Private / HealthSystem.cpp
@Genexuz Genexuz on 14 Dec 2022 1 KB medo
  1. #include "HealthSystem.h"
  2. #include "Net/UnrealNetwork.h"
  3. #include "Engine/Engine.h"
  4. UHealthSystem::UHealthSystem()
  5. {
  6. PrimaryComponentTick.bCanEverTick = false;
  7. PrimaryComponentTick.bStartWithTickEnabled = false;
  8. }
  9. void UHealthSystem::BeginPlay()
  10. {
  11. Super::BeginPlay();
  12. Health = MaxHealth;
  13. Shield = 0;
  14. }
  15. float UHealthSystem::GetHealth() const
  16. {
  17. return Health;
  18. }
  19. float UHealthSystem::GetMaxHealth() const
  20. {
  21. return MaxHealth;
  22. }
  23. float UHealthSystem::GetShield() const
  24. {
  25. return Shield;
  26. }
  27. void UHealthSystem::TakeDamage(const float Amount)
  28. {
  29. if (Amount > 0)
  30. {
  31. Health -= Amount;
  32. OnDamageTakenEvent.Broadcast(Amount);
  33. }
  34. }
  35. void UHealthSystem::RecoverHealth(const float Amount)
  36. {
  37. if (Amount > 0)
  38. {
  39. Health += Amount;
  40. if (Health >= MaxHealth)
  41. {
  42. Health = MaxHealth;
  43. }
  44. OnDamageHealedEvent.Broadcast(Amount);
  45. }
  46. }
  47. void UHealthSystem::ReceiveShield(const float Amount)
  48. {
  49. if (Amount >= 0)
  50. {
  51. Shield += Amount;
  52. OnShieldReceiveEvent.Broadcast(Amount);
  53. }
  54. }
  55. void UHealthSystem::RemoveShield(const float Amount)
  56. {
  57. if (Amount >= 0)
  58. {
  59. Shield -= Amount;
  60. if (Shield < 0)
  61. {
  62. Shield = 0;
  63. }
  64. OnShieldReceiveEvent.Broadcast(Amount);
  65. }
  66. }