diff --git a/Client/Application/ViewModels/HeroSummaryInfoViewModel.cs b/Client/Application/ViewModels/HeroSummaryInfoViewModel.cs index b26c57f..5a4a875 100644 --- a/Client/Application/ViewModels/HeroSummaryInfoViewModel.cs +++ b/Client/Application/ViewModels/HeroSummaryInfoViewModel.cs @@ -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"); } diff --git a/Client/Domain/Service/HeroHandler.cs b/Client/Domain/Service/HeroHandler.cs index 97e5154..b0f058d 100644 --- a/Client/Domain/Service/HeroHandler.cs +++ b/Client/Domain/Service/HeroHandler.cs @@ -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); } } diff --git a/Client/Domain/ValueObjects/ExperienceInfo.cs b/Client/Domain/ValueObjects/ExperienceInfo.cs index 23b0f87..43927e6 100644 --- a/Client/Domain/ValueObjects/ExperienceInfo.cs +++ b/Client/Domain/ValueObjects/ExperienceInfo.cs @@ -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; } }