diff --git a/Libraries/Core/Services/PlayerService.cs b/Libraries/Core/Services/PlayerService.cs index ee742687..0b521c71 100644 --- a/Libraries/Core/Services/PlayerService.cs +++ b/Libraries/Core/Services/PlayerService.cs @@ -1,13 +1,31 @@ using SptCommon.Annotations; using Core.Models.Eft.Common; +using Core.Models.Utils; +using Core.Utils; namespace Core.Services; [Injectable(InjectionType.Singleton)] -public class PlayerService +public class PlayerService( + DatabaseService _databaseService +) { - public int CalculateLevel(PmcData pmcData) + public int? CalculateLevel(PmcData pmcData) { - throw new NotImplementedException(); + var accExp = 0; + + for (int i = 0; i < _databaseService.GetGlobals().Configuration.Exp.Level.ExperienceTable.Length; i++) + { + accExp += _databaseService.GetGlobals().Configuration.Exp.Level.ExperienceTable[i].Experience ?? 0; + + if (pmcData.Info.Experience < accExp) + { + break; + } + + pmcData.Info.Level = i + 1; + } + + return pmcData.Info.Level; } }