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)
{
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");
}

View File

@ -16,6 +16,7 @@ namespace Client.Domain.Service
{
mainViewModel.CreateHero(entity);
entity.ExperienceInfo.ExpToLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level + 1);
entity.ExperienceInfo.ExpToPrevLevel = experienceHelper.GetExperienceToLevel(entity.ExperienceInfo.Level);
}
public override void OnUpdate(Hero entity)
@ -23,6 +24,7 @@ namespace Client.Domain.Service
if (entity.ExperienceInfo != null)
{
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 sp;
private ulong expToLevel;
private ulong expPrevToLevel;
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 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 ExpToPrevLevel { get => expPrevToLevel; set { if (value != expPrevToLevel) { expPrevToLevel = value; OnPropertyChanged("ExpToPrevLevel"); } } }
public double ExpPercent
{
get
{
return ExpToLevel != 0 ? Exp / (double) ExpToLevel * 100 : 0;
return ExpToLevel != 0 ? (Exp - ExpToPrevLevel) / (double) (ExpToLevel - ExpToPrevLevel) * 100 : 0;
}
}