Pedro Gomes 4a7430533a Character Stats Revamp (WIP)
- created secondary stats
- added characterStatsBalancing constants
2024-08-11 22:15:23 +01:00

82 lines
3.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
namespace Kryz.CharacterStats.Examples
{
public class CharacterStats : MonoBehaviour
{
//Primary
public CharacterStat Strength;
public CharacterStat Agility;
public CharacterStat Intelligence;
public CharacterStat Spirit;
public CharacterStat Vitality;
//Secondary
public CharacterStat CritChance;
public CharacterStat CritDamage;
public CharacterStat AttackDamage;
public CharacterStat SpellDamage;
public CharacterStat MaxHealth;
public CharacterStat Armor;
public CharacterStat MagicResistance;
public Dictionary<string, CharacterStat> statsDictionary = new Dictionary<string, CharacterStat>();
public UnityEvent onUpdateStatValues = new UnityEvent();
protected virtual void Awake()
{
statsDictionary.Add(nameof(Strength).ToLower(), Strength);
statsDictionary.Add(nameof(Agility).ToLower(), Agility);
statsDictionary.Add(nameof(Intelligence).ToLower(), Intelligence);
statsDictionary.Add(nameof(Spirit).ToLower(), Spirit);
statsDictionary.Add(nameof(Vitality).ToLower(), Vitality);
statsDictionary.Add(nameof(CritChance).ToLower(), CritChance);
statsDictionary.Add(nameof(CritDamage).ToLower(), CritDamage);
statsDictionary.Add(nameof(AttackDamage).ToLower(), AttackDamage);
statsDictionary.Add(nameof(SpellDamage).ToLower(), SpellDamage);
statsDictionary.Add(nameof(MaxHealth).ToLower(), MaxHealth);
statsDictionary.Add(nameof(Armor).ToLower(), Armor);
statsDictionary.Add(nameof(MagicResistance).ToLower(), MagicResistance);
onUpdateStatValues.AddListener(UpdateSecondaryStatsBasedOnPrimaryStats);
}
public void IncreaseAllStatPoints(int amount)
{
Strength.BaseValue += amount;
Agility.BaseValue += amount;
Intelligence.BaseValue += amount;
Spirit.BaseValue += amount;
Vitality.BaseValue += amount;
onUpdateStatValues.Invoke();
}
public void UpdateSecondaryStatsBasedOnPrimaryStats()
{
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
Strength.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Agility.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Intelligence.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
//Strength.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Agility.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Intelligence.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Spirit.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Vitality.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
}
}
}