Add level and experience attributes to CharacterAttributes class
This commit is contained in:
@@ -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;
|
||||||
@@ -36,6 +38,9 @@ namespace Data
|
|||||||
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
|
||||||
{
|
{
|
||||||
get => health;
|
get => health;
|
||||||
@@ -146,6 +151,30 @@ namespace Data
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
Health = Math.Clamp(value, 0, MaxHealth);
|
Health = Math.Clamp(value, 0, MaxHealth);
|
||||||
@@ -200,6 +229,16 @@ 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);
|
||||||
@@ -250,6 +289,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()
|
||||||
{
|
{
|
||||||
Health = MaxHealth = 100f;
|
Health = MaxHealth = 100f;
|
||||||
@@ -261,6 +310,8 @@ namespace Data
|
|||||||
MeleeDamage = 1f;
|
MeleeDamage = 1f;
|
||||||
AttackRange = 16f;
|
AttackRange = 16f;
|
||||||
AttackSpeed = 1f;
|
AttackSpeed = 1f;
|
||||||
|
Level = 1;
|
||||||
|
Experience = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user