71 lines
1.9 KiB
C#
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;
|
|
} |