Tugas-Akhir-Game-Edukasi-Ma.../Assets/Scripts/Player/PlayerUpgrade.cs

71 lines
1.9 KiB
C#

using System;
using UnityEngine;
public class PlayerUpgrade : MonoBehaviour
{
public static event Action OnPlayerUpgradeEvent;
[Header("Config")]
[SerializeField] private PlayerStats stats;
[Header("Settings")]
[SerializeField] private UpgradeSettings[] settings;
private void UpgradePlayer(int upgradeIndex)
{
stats.BaseDamage += settings[upgradeIndex].DamageUpgrade;
stats.TotalDamage += settings[upgradeIndex].DamageUpgrade;
stats.MaxHealth += settings[upgradeIndex].HealthUpgrade;
stats.Health = stats.MaxHealth;
stats.MaxMana += settings[upgradeIndex].ManaUpgrade;
stats.Mana = stats.MaxMana;
stats.CriticalChance += settings[upgradeIndex].CChanceUpgrade;
stats.CriticalDamage += settings[upgradeIndex].CDamageUpgrade;
}
private void AttributeCallback(AttributeType attributeType)
{
if (stats.AttributePoints == 0) return;
switch (attributeType)
{
case AttributeType.Strength:
UpgradePlayer(0);
stats.Strength++;
break;
case AttributeType.Dexterity:
UpgradePlayer(1);
stats.Dexterity++;
break;
case AttributeType.Intelligence:
UpgradePlayer(2);
stats.Intelligence++;
break;
}
stats.AttributePoints--;
OnPlayerUpgradeEvent?.Invoke();
}
private void OnEnable()
{
AttributeButton.OnAttributeSelectedEvent += AttributeCallback;
}
private void OnDisable()
{
AttributeButton.OnAttributeSelectedEvent -= AttributeCallback;
}
}
[Serializable]
public class UpgradeSettings
{
public string Name;
[Header("Values")]
public float DamageUpgrade;
public float HealthUpgrade;
public float ManaUpgrade;
public float CChanceUpgrade;
public float CDamageUpgrade;
}