fix: fix calculation of exp percentage

This commit is contained in:
k0t9i
2023-01-30 19:13:01 +04:00
parent a8adf23959
commit 905b189bf2
3 changed files with 6 additions and 2 deletions

View File

@@ -90,7 +90,7 @@ namespace Client.Application.ViewModels
private void ExperienceInfo_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) private void ExperienceInfo_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{ {
if (e.PropertyName == "Exp" || e.PropertyName == "ExpToLevel" || e.PropertyName == "Level") if (e.PropertyName == "Exp" || e.PropertyName == "ExpToLevel" || e.PropertyName == "ExpToPrevLevel" || e.PropertyName == "Level")
{ {
OnPropertyChanged("Experience"); OnPropertyChanged("Experience");
} }

View File

@@ -16,6 +16,7 @@ namespace Client.Domain.Service
{ {
mainViewModel.CreateHero(entity); mainViewModel.CreateHero(entity);
entity.ExperienceInfo.ExpToLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level + 1); entity.ExperienceInfo.ExpToLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level + 1);
entity.ExperienceInfo.ExpToPrevLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level);
} }
public override void OnUpdate(Hero entity) public override void OnUpdate(Hero entity)
@@ -23,6 +24,7 @@ namespace Client.Domain.Service
if (entity.ExperienceInfo != null) if (entity.ExperienceInfo != null)
{ {
entity.ExperienceInfo.ExpToLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level + 1); entity.ExperienceInfo.ExpToLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level + 1);
entity.ExperienceInfo.ExpToPrevLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level);
} }
} }

View File

@@ -8,16 +8,18 @@ namespace Client.Domain.ValueObjects
private uint exp; private uint exp;
private uint sp; private uint sp;
private ulong expToLevel; private ulong expToLevel;
private ulong expPrevToLevel;
public uint Level { get => level; set { if (value != level) { level = value; OnPropertyChanged("Level"); } } } public uint Level { get => level; set { if (value != level) { level = value; OnPropertyChanged("Level"); } } }
public uint Exp { get => exp; set { if (value != exp) { exp = value; OnPropertyChanged("Exp"); } } } public uint Exp { get => exp; set { if (value != exp) { exp = value; OnPropertyChanged("Exp"); } } }
public uint Sp { get => sp; set { if (value != sp) { sp = value; OnPropertyChanged("Sp"); } } } public uint Sp { get => sp; set { if (value != sp) { sp = value; OnPropertyChanged("Sp"); } } }
public ulong ExpToLevel { get => expToLevel; set { if (value != expToLevel) { expToLevel = value; OnPropertyChanged("ExpToLevel"); } } } public ulong ExpToLevel { get => expToLevel; set { if (value != expToLevel) { expToLevel = value; OnPropertyChanged("ExpToLevel"); } } }
public ulong ExpToPrevLevel { get => expPrevToLevel; set { if (value != expPrevToLevel) { expPrevToLevel = value; OnPropertyChanged("ExpToPrevLevel"); } } }
public double ExpPercent public double ExpPercent
{ {
get get
{ {
return ExpToLevel != 0 ? Exp / (double) ExpToLevel * 100 : 0; return ExpToLevel != 0 ? (Exp - ExpToPrevLevel) / (double) (ExpToLevel - ExpToPrevLevel) * 100 : 0;
} }
} }