Add level and experience attributes to CharacterAttributes class

This commit is contained in:
2025-07-11 22:29:59 +02:00
parent 7640c59e43
commit b95ac51a82

View File

@@ -12,6 +12,8 @@ namespace Data
[OdinSerialize] public float moveSpeed = 5f; [OdinSerialize] public float moveSpeed = 5f;
[OdinSerialize] public float luck = 0f; [OdinSerialize] public float luck = 0f;
[OdinSerialize] public float armor = 0f; [OdinSerialize] public float armor = 0f;
[OdinSerialize] public int level = 1;
[OdinSerialize] public int experience = 0;
[OdinSerialize, PropertyTooltip("This is damage multiplier")] [OdinSerialize, PropertyTooltip("This is damage multiplier")]
public float damage = 1f; public float damage = 1f;
@@ -35,6 +37,9 @@ namespace Data
public event Action<float> OnMeleeDamageChanged; public event Action<float> OnMeleeDamageChanged;
public event Action<float> OnAttackRangeChanged; public event Action<float> OnAttackRangeChanged;
public event Action<float> OnAttackSpeedChanged; public event Action<float> OnAttackSpeedChanged;
public event Action<int> OnExperienceChanged;
public event Action<int> OnLevelChanged;
public float Health public float Health
{ {
@@ -145,6 +150,30 @@ namespace Data
OnAttackSpeedChanged?.Invoke(attackSpeed); OnAttackSpeedChanged?.Invoke(attackSpeed);
} }
} }
public int Experience
{
get => experience;
private set
{
if (experience == value) return;
experience = value;
OnExperienceChanged?.Invoke(experience);
//TODO: Implement level up logic
}
}
public int Level
{
get => level;
private set
{
if (level == value) return;
level = value;
OnLevelChanged?.Invoke(level);
}
}
public void SetHealth(float value) public void SetHealth(float value)
{ {
@@ -199,7 +228,17 @@ namespace Data
{ {
AttackSpeed = Math.Max(value, 0); AttackSpeed = Math.Max(value, 0);
} }
public void SetExperience(int value)
{
Experience = Math.Max(value, 0);
}
public void SetLevel(int value)
{
Level = Math.Max(value, 1);
}
public void ModifyHealth(float delta) public void ModifyHealth(float delta)
{ {
SetHealth(Health + delta); SetHealth(Health + delta);
@@ -249,6 +288,16 @@ namespace Data
{ {
SetAttackSpeed(AttackSpeed + delta); SetAttackSpeed(AttackSpeed + delta);
} }
public void ModifyExperience(int delta)
{
SetExperience(Experience + delta);
}
public void ModifyLevel(int delta)
{
SetLevel(Level + delta);
}
public void Reset() public void Reset()
{ {
@@ -261,6 +310,8 @@ namespace Data
MeleeDamage = 1f; MeleeDamage = 1f;
AttackRange = 16f; AttackRange = 16f;
AttackSpeed = 1f; AttackSpeed = 1f;
Level = 1;
Experience = 0;
} }
} }
} }