MIF_E31221263/Assets/Scripts/Player/PlayerHealth.cs

62 lines
1.3 KiB
C#

using UnityEngine;
public class PlayerHealth : MonoBehaviour, IDamageable
{
[Header("Config")]
[SerializeField] private PlayerStats stats;
[SerializeField] private GameObject restartPanel; // 🔹 Tambahkan ini di Inspector
private PlayerAnimations playerAnimations;
private void Awake()
{
playerAnimations = GetComponent<PlayerAnimations>();
}
private void Update()
{
if (stats.Health <= 0f)
{
PlayerDead();
}
}
public void TakeDamage(float amount)
{
if (stats.Health <= 0f) return;
stats.Health -= amount;
DamageManager.Instance.ShowDamageText(amount, transform);
if (stats.Health <= 0f)
{
stats.Health = 0f;
PlayerDead();
}
}
public void RestoreHealth(float amount)
{
stats.Health += amount;
if (stats.Health > stats.MaxHealth)
{
stats.Health = stats.MaxHealth;
}
}
public bool CanRestoreHealth()
{
return stats.Health > 0 && stats.Health < stats.MaxHealth;
}
private void PlayerDead()
{
playerAnimations.SetDeadAnimation();
// 🔹 Tampilkan panel restart
if (restartPanel != null)
{
restartPanel.SetActive(true);
}
}
}