fix: fix calculation of exp percentage
This commit is contained in:
@@ -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");
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user