diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomEntryConverters.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomEntryConverters.cs index 40fdbb577..81328de86 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomEntryConverters.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomEntryConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.ApiSpec.Admin.CustomEntries; using DevilDaggersInfo.Web.Server.Domain.Entities; @@ -32,13 +32,13 @@ public static GetCustomEntryForOverview ToAdminApiOverview(this CustomEntryEntit GemsTotal = customEntry.GemsTotal, HomingStored = customEntry.HomingStored, HomingEaten = customEntry.HomingEaten, - LevelUpTime2 = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3 = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4 = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2 = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3 = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4 = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, PlayerName = customEntry.Player.PlayerName, SpawnsetName = customEntry.CustomLeaderboard.Spawnset.Name, SubmitDate = customEntry.SubmitDate, - Time = customEntry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(customEntry.Time).Seconds, }; } @@ -62,13 +62,13 @@ public static GetCustomEntry ToAdminApi(this CustomEntryEntity customEntry) GemsTotal = customEntry.GemsTotal, HomingStored = customEntry.HomingStored, HomingEaten = customEntry.HomingEaten, - LevelUpTime2 = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3 = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4 = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2 = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3 = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4 = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, PlayerId = customEntry.PlayerId, SpawnsetId = customEntry.CustomLeaderboard.SpawnsetId, SubmitDate = customEntry.SubmitDate, - Time = customEntry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(customEntry.Time).Seconds, }; } } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomLeaderboardConverters.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomLeaderboardConverters.cs index 0e1f37b71..e7bd1c636 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomLeaderboardConverters.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Converters/DomainToApi/CustomLeaderboardConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Values; @@ -91,11 +91,11 @@ private static AdminApi.GetCustomLeaderboardDaggers ToAdminApiDaggers(this Custo bool isTime = customLeaderboard.RankSorting.IsTime(); return new() { - Bronze = isTime ? customLeaderboard.Bronze.ToSecondsTime() : customLeaderboard.Bronze, - Silver = isTime ? customLeaderboard.Silver.ToSecondsTime() : customLeaderboard.Silver, - Golden = isTime ? customLeaderboard.Golden.ToSecondsTime() : customLeaderboard.Golden, - Devil = isTime ? customLeaderboard.Devil.ToSecondsTime() : customLeaderboard.Devil, - Leviathan = isTime ? customLeaderboard.Leviathan.ToSecondsTime() : customLeaderboard.Leviathan, + Bronze = isTime ? GameTime.FromGameUnits(customLeaderboard.Bronze).Seconds : customLeaderboard.Bronze, + Silver = isTime ? GameTime.FromGameUnits(customLeaderboard.Silver).Seconds : customLeaderboard.Silver, + Golden = isTime ? GameTime.FromGameUnits(customLeaderboard.Golden).Seconds : customLeaderboard.Golden, + Devil = isTime ? GameTime.FromGameUnits(customLeaderboard.Devil).Seconds : customLeaderboard.Devil, + Leviathan = isTime ? GameTime.FromGameUnits(customLeaderboard.Leviathan).Seconds : customLeaderboard.Leviathan, }; } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomEntryService.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomEntryService.cs index 113f2b27d..42a74e7e5 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomEntryService.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomEntryService.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.ApiSpec.Admin.CustomEntries; using DevilDaggersInfo.Web.Server.Domain.Admin.Exceptions; using DevilDaggersInfo.Web.Server.Domain.Entities; @@ -45,12 +45,12 @@ public async Task AddCustomEntryAsync(AddCustomEntry addCustomEntry) GemsTotal = addCustomEntry.GemsTotal, HomingStored = addCustomEntry.HomingStored, HomingEaten = addCustomEntry.HomingEaten, - LevelUpTime2 = addCustomEntry.LevelUpTime2.To10thMilliTime(), - LevelUpTime3 = addCustomEntry.LevelUpTime3.To10thMilliTime(), - LevelUpTime4 = addCustomEntry.LevelUpTime4.To10thMilliTime(), + LevelUpTime2 = (int)GameTime.FromSeconds(addCustomEntry.LevelUpTime2).GameUnits, + LevelUpTime3 = (int)GameTime.FromSeconds(addCustomEntry.LevelUpTime3).GameUnits, + LevelUpTime4 = (int)GameTime.FromSeconds(addCustomEntry.LevelUpTime4).GameUnits, PlayerId = addCustomEntry.PlayerId, SubmitDate = addCustomEntry.SubmitDate, - Time = addCustomEntry.Time.To10thMilliTime(), + Time = (int)GameTime.FromSeconds(addCustomEntry.Time).GameUnits, }; _dbContext.CustomEntries.Add(customEntry); await _dbContext.SaveChangesAsync(); @@ -81,12 +81,12 @@ public async Task EditCustomEntryAsync(int id, EditCustomEntry editCustomEntry) customEntry.GemsTotal = editCustomEntry.GemsTotal; customEntry.HomingStored = editCustomEntry.HomingStored; customEntry.HomingEaten = editCustomEntry.HomingEaten; - customEntry.LevelUpTime2 = editCustomEntry.LevelUpTime2.To10thMilliTime(); - customEntry.LevelUpTime3 = editCustomEntry.LevelUpTime3.To10thMilliTime(); - customEntry.LevelUpTime4 = editCustomEntry.LevelUpTime4.To10thMilliTime(); + customEntry.LevelUpTime2 = (int)GameTime.FromSeconds(editCustomEntry.LevelUpTime2).GameUnits; + customEntry.LevelUpTime3 = (int)GameTime.FromSeconds(editCustomEntry.LevelUpTime3).GameUnits; + customEntry.LevelUpTime4 = (int)GameTime.FromSeconds(editCustomEntry.LevelUpTime4).GameUnits; customEntry.PlayerId = editCustomEntry.PlayerId; customEntry.SubmitDate = editCustomEntry.SubmitDate; - customEntry.Time = editCustomEntry.Time.To10thMilliTime(); + customEntry.Time = (int)GameTime.FromSeconds(editCustomEntry.Time).GameUnits; await _dbContext.SaveChangesAsync(); } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomLeaderboardService.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomLeaderboardService.cs index 3e70befa2..4987ef9f9 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomLeaderboardService.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/CustomLeaderboardService.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Core.CriteriaExpression.Parts; using DevilDaggersInfo.Core.Spawnset; @@ -514,10 +514,13 @@ levelUpTime3Operator is CustomLeaderboardCriteriaOperator.Equal or CustomLeaderb return expressionBytes; } + /// + /// Gets the dagger value in game units if the rank sorting is time, otherwise the value as is. + /// private static int GetDaggerValue(ApiSpec.Admin.CustomLeaderboards.CustomLeaderboardRankSorting apiRankSorting, double apiValue) { if (apiRankSorting.ToDomain().IsTime()) - return apiValue.To10thMilliTime(); + return (int)GameTime.FromSeconds(apiValue).GameUnits; return (int)apiValue; } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/SpawnsetService.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/SpawnsetService.cs index 15df7c157..2624cfb3a 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/SpawnsetService.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Services/SpawnsetService.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.Spawnset; using DevilDaggersInfo.Web.ApiSpec.Admin.Spawnsets; using DevilDaggersInfo.Web.Server.Domain.Admin.Exceptions; @@ -53,13 +53,13 @@ public async Task AddSpawnsetAsync(AddSpawnset addSpawnset) GameMode = spawnsetBinary.GameMode.ToDomain(), SpawnVersion = spawnsetBinary.SpawnVersion, WorldVersion = spawnsetBinary.WorldVersion, - PreLoopLength = sections.PreLoopSection.Length?.To10thMilliTime(), + PreLoopLength = sections.PreLoopSection.Length.HasValue ? (int)GameTime.FromSeconds(sections.PreLoopSection.Length.Value).GameUnits : null, PreLoopSpawnCount = sections.PreLoopSection.SpawnCount, - LoopLength = sections.LoopSection.Length?.To10thMilliTime(), + LoopLength = sections.LoopSection.Length.HasValue ? (int)GameTime.FromSeconds(sections.LoopSection.Length.Value).GameUnits : null, LoopSpawnCount = sections.LoopSection.SpawnCount, HandLevel = spawnsetBinary.HandLevel.ToDomain(), AdditionalGems = spawnsetBinary.AdditionalGems, - TimerStart = spawnsetBinary.TimerStart.To10thMilliTime(), + TimerStart = (int)GameTime.FromSeconds(spawnsetBinary.TimerStart).GameUnits, EffectiveHandLevel = effectivePlayerSettings.HandLevel.ToDomain(), EffectiveGemsOrHoming = effectivePlayerSettings.GemsOrHoming, EffectiveHandMesh = effectivePlayerSettings.HandMesh.ToDomain(), diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/LeaderboardHistoryStatisticsRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/LeaderboardHistoryStatisticsRepository.cs index a1212a5a6..a82238a90 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/LeaderboardHistoryStatisticsRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/LeaderboardHistoryStatisticsRepository.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.ApiSpec.Main.LeaderboardHistoryStatistics; using DevilDaggersInfo.Web.Server.Domain.Models.FileSystem; using DevilDaggersInfo.Web.Server.Domain.Models.LeaderboardHistory; @@ -31,7 +31,7 @@ public List GetLeaderboardHistoryStatistics() ulong deathsGlobal = current.DeathsGlobal; ulong gemsGlobal = current.GemsGlobal; ulong killsGlobal = current.KillsGlobal; - double timeGlobal = current.TimeGlobal.ToSecondsTime(); + double timeGlobal = GameTime.FromGameUnits(current.TimeGlobal).Seconds; double rank100 = GetTimeOr0(current, 100); double rank10 = GetTimeOr0(current, 10); double rank3 = GetTimeOr0(current, 3); @@ -94,7 +94,7 @@ public List GetLeaderboardHistoryStatistics() totalPlayersUpdated = true; } - double currentTimeGlobal = current.TimeGlobal.ToSecondsTime(); + double currentTimeGlobal = GameTime.FromGameUnits(current.TimeGlobal).Seconds; if (Math.Abs(timeGlobal - currentTimeGlobal) > 0.0002) { timeGlobal = currentTimeGlobal; @@ -151,6 +151,9 @@ void Add(bool daggersFiredUpdated, bool daggersHitUpdated, bool deathsUpdated, b }); static double GetTimeOr0(LeaderboardHistory history, int rank) - => history.Entries.Find(eh => eh.Rank == rank)?.Time.ToSecondsTime() ?? 0; + { + EntryHistory? entry = history.Entries.Find(eh => eh.Rank == rank); + return entry == null ? 0 : GameTime.FromGameUnits(entry.Time).Seconds; + } } } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/WorldRecordRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/WorldRecordRepository.cs index ecaa8b604..e0b9503ca 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/WorldRecordRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Main/Repositories/WorldRecordRepository.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.Wiki; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; @@ -179,7 +179,7 @@ private List GetBaseWorldRecords() DateTime = leaderboard.DateTime, Id = mainPlayerId ?? firstLegitPlace.Id, Username = firstLegitPlace.Username, - Time = firstLegitPlace.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(firstLegitPlace.Time).Seconds, Kills = firstLegitPlace.Kills, Gems = firstLegitPlace.Gems, DeathType = firstLegitPlace.DeathType, diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Commands/CustomEntries/UploadRequest.cs b/src/DevilDaggersInfo.Web.Server.Domain/Commands/CustomEntries/UploadRequest.cs index b633ec549..534e62b5a 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Commands/CustomEntries/UploadRequest.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Commands/CustomEntries/UploadRequest.cs @@ -1,3 +1,4 @@ +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.Common.Extensions; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Web.Server.Domain.Constants; @@ -59,7 +60,7 @@ public UploadRequest( PlayerId = playerId; PlayerName = playerName; ReplayPlayerId = replayPlayerId; - TimeInSeconds = timeInSeconds; + Time = GameTime.FromSeconds(timeInSeconds); TimeAsBytes = timeAsBytes; GemsCollected = gemsCollected; EnemiesKilled = enemiesKilled; @@ -72,9 +73,9 @@ public UploadRequest( GemsEaten = gemsEaten; GemsTotal = gemsTotal; DeathType = deathType; - LevelUpTime2InSeconds = levelUpTime2InSeconds; - LevelUpTime3InSeconds = levelUpTime3InSeconds; - LevelUpTime4InSeconds = levelUpTime4InSeconds; + LevelUpTime2 = GameTime.FromSeconds(levelUpTime2InSeconds); + LevelUpTime3 = GameTime.FromSeconds(levelUpTime3InSeconds); + LevelUpTime4 = GameTime.FromSeconds(levelUpTime4InSeconds); LevelUpTime2AsBytes = levelUpTime2AsBytes; LevelUpTime3AsBytes = levelUpTime3AsBytes; LevelUpTime4AsBytes = levelUpTime4AsBytes; @@ -102,7 +103,7 @@ public UploadRequest( public int ReplayPlayerId { get; } - public double TimeInSeconds { get; } + public GameTime Time { get; } public byte[] TimeAsBytes { get; } @@ -131,11 +132,11 @@ public UploadRequest( public byte DeathType { get; } - public double LevelUpTime2InSeconds { get; } + public GameTime LevelUpTime2 { get; } - public double LevelUpTime3InSeconds { get; } + public GameTime LevelUpTime3 { get; } - public double LevelUpTime4InSeconds { get; } + public GameTime LevelUpTime4 { get; } public byte[] LevelUpTime2AsBytes { get; } @@ -219,10 +220,10 @@ public TargetCollection CreateTargetCollection() HomingStored = GetFinalHomingValue(), HomingEaten = HomingEaten, DeathType = DeathType, - Time = TimeInSeconds.To10thMilliTime(), - LevelUpTime2 = LevelUpTime2InSeconds.To10thMilliTime(), - LevelUpTime3 = LevelUpTime3InSeconds.To10thMilliTime(), - LevelUpTime4 = LevelUpTime4InSeconds.To10thMilliTime(), + Time = (int)Time.GameUnits, + LevelUpTime2 = (int)LevelUpTime2.GameUnits, + LevelUpTime3 = (int)LevelUpTime3.GameUnits, + LevelUpTime4 = (int)LevelUpTime4.GameUnits, EnemiesAlive = EnemiesAlive, Skull1Kills = GetFinalEnemyStat(urd => urd.Skull1sKilled), Skull2Kills = GetFinalEnemyStat(urd => urd.Skull2sKilled), diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Models/LeaderboardStatistics/ArrayStatistics.cs b/src/DevilDaggersInfo.Web.Server.Domain/Models/LeaderboardStatistics/ArrayStatistics.cs index 9733936cb..2b8e62847 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Models/LeaderboardStatistics/ArrayStatistics.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Models/LeaderboardStatistics/ArrayStatistics.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; namespace DevilDaggersInfo.Web.Server.Domain.Models.LeaderboardStatistics; @@ -16,7 +16,7 @@ public void Populate(List entries, int? limit = null) if (limit.HasValue) entries = entries.Take(limit.Value).ToList(); - Times.Populate(entries.ConvertAll(e => e.Time.ToSecondsTime()), d => d); + Times.Populate(entries.ConvertAll(e => GameTime.FromGameUnits(e.Time).Seconds), d => d); Kills.Populate(entries.ConvertAll(e => (double)e.Kills), d => d); Gems.Populate(entries.ConvertAll(e => (double)e.Gems), d => d); DaggersFired.Populate(entries.ConvertAll(e => (double)e.DaggersFired), d => Math.Round(d / 100) * 100); diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs index c1c53516d..d961b4baa 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs @@ -1,3 +1,4 @@ +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.Common.Extensions; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Web.Server.Domain.Constants; @@ -273,7 +274,7 @@ public async Task GetGlobalCustomLeaderboardAsync(Spawn CustomEntryEntity customEntry = customEntries[i]; GlobalCustomLeaderboardEntryData data; - if (!globalData.ContainsKey(customEntry.PlayerId)) + if (!globalData.TryGetValue(customEntry.PlayerId, out (string Name, GlobalCustomLeaderboardEntryData Data) value)) { data = new(); @@ -282,7 +283,7 @@ public async Task GetGlobalCustomLeaderboardAsync(Spawn } else { - data = globalData[customEntry.PlayerId].Data; + data = value.Data; } data.Rankings.Add(new() { Rank = i + 1, TotalPlayers = customEntries.Count }); @@ -399,7 +400,7 @@ private static CustomLeaderboardOverview ToOverview(CustomLeaderboardData cl) static double GetDaggerValue(int databaseValue, CustomLeaderboardRankSorting rankSorting) => rankSorting switch { - CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => databaseValue.ToSecondsTime(), + CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => GameTime.FromGameUnits(databaseValue).Seconds, _ => databaseValue, }; } @@ -504,7 +505,7 @@ private static double GetHighscoreValue(IDaggerStatCustomEntry customEntry, Cust { return rankSorting switch { - CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => customEntry.Time.ToSecondsTime(), + CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => GameTime.FromGameUnits(customEntry.Time).Seconds, CustomLeaderboardRankSorting.GemsCollectedAsc or CustomLeaderboardRankSorting.GemsCollectedDesc => customEntry.GemsCollected, CustomLeaderboardRankSorting.GemsDespawnedAsc or CustomLeaderboardRankSorting.GemsDespawnedDesc => customEntry.GemsDespawned, CustomLeaderboardRankSorting.GemsEatenAsc or CustomLeaderboardRankSorting.GemsEatenDesc => customEntry.GemsEaten, diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/PlayerHistoryRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/PlayerHistoryRepository.cs index deba42397..9cc409e64 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/PlayerHistoryRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/PlayerHistoryRepository.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using DevilDaggersInfo.Web.Server.Domain.Models.FileSystem; @@ -85,7 +85,7 @@ public PlayerHistory GetPlayerHistoryById(int id) Gems = entry.Gems, Kills = entry.Kills, Rank = correctedRank, - Time = entry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(entry.Time).Seconds, Username = entry.Username, }); @@ -110,7 +110,7 @@ public PlayerHistory GetPlayerHistoryById(int id) activityHistory.Add(new() { DeathsIncrement = totalDeathsForActivityHistory.HasValue && timeSpan.HasValue ? (entry.DeathsTotal - totalDeathsForActivityHistory.Value) / timeSpan.Value.TotalDays : 0, - TimeIncrement = totalTimeForActivityHistory.HasValue && timeSpan.HasValue ? (entry.TimeTotal - totalTimeForActivityHistory.Value).ToSecondsTime() / timeSpan.Value.TotalDays : 0, + TimeIncrement = totalTimeForActivityHistory.HasValue && timeSpan.HasValue ? GameTime.FromGameUnits(entry.TimeTotal - totalTimeForActivityHistory.Value).Seconds / timeSpan.Value.TotalDays : 0, DateTime = leaderboard.DateTime, }); diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Services/Caching/LeaderboardStatisticsCache.cs b/src/DevilDaggersInfo.Web.Server.Domain/Services/Caching/LeaderboardStatisticsCache.cs index 98aa50a81..2fc6ae842 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Services/Caching/LeaderboardStatisticsCache.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Services/Caching/LeaderboardStatisticsCache.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.Wiki; using DevilDaggersInfo.Core.Wiki.Objects; using DevilDaggersInfo.Web.Server.Domain.Models.FileSystem; @@ -115,7 +115,7 @@ public void Initiate() else DeathsStatistics[death]++; - double seconds = entry.Time.ToSecondsTime(); + double seconds = GameTime.FromGameUnits(entry.Time).Seconds; if (seconds < currentDaggerTime) { diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Services/CustomEntryProcessor.cs b/src/DevilDaggersInfo.Web.Server.Domain/Services/CustomEntryProcessor.cs index 204a94a61..4592f9498 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Services/CustomEntryProcessor.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Services/CustomEntryProcessor.cs @@ -1,5 +1,4 @@ using DevilDaggersInfo.Core.Common; -using DevilDaggersInfo.Core.Common.Extensions; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Core.CriteriaExpression.Extensions; using DevilDaggersInfo.Core.Encryption; @@ -183,10 +182,10 @@ await _dbContext.Players.AddAsync(new() } // Treat identical replays as no highscore. - int requestTimeAsInt = uploadRequest.TimeInSeconds.To10thMilliTime(); + int requestTimeAsInt = (int)uploadRequest.Time.GameUnits; if (uploadRequest.IsReplay && IsReplayTimeAlmostTheSame(requestTimeAsInt, customEntry.Time) && await IsReplayFileTheSame(customEntry.Id, uploadRequest.ReplayData)) { - _logger.LogInformation("Score submission replay time was modified because of identical replay (database: {OriginalTime} - request: {ReplayTime}).", customEntry.Time.ToSecondsTime().ToString(StringFormats.TimeFormat), uploadRequest.TimeInSeconds.ToString(StringFormats.TimeFormat)); + _logger.LogInformation("Score submission replay time was modified because of identical replay (database: {OriginalTime} - request: {ReplayTime}).", GameTime.FromGameUnits(customEntry.Time).Seconds.ToString(StringFormats.TimeFormat), uploadRequest.Time.Seconds.ToString(StringFormats.TimeFormat)); return new() { Leaderboard = ToLeaderboardSummary(customLeaderboard), @@ -323,7 +322,7 @@ private async Task ProcessNewScoreAsync(UploadRequest CustomEntryEntity newCustomEntry = new() { PlayerId = uploadRequest.PlayerId, - Time = uploadRequest.TimeInSeconds.To10thMilliTime(), + Time = (int)uploadRequest.Time.GameUnits, GemsCollected = uploadRequest.GemsCollected, GemsDespawned = uploadRequest.GemsDespawned, GemsEaten = uploadRequest.GemsEaten, @@ -335,9 +334,9 @@ private async Task ProcessNewScoreAsync(UploadRequest EnemiesAlive = uploadRequest.EnemiesAlive, HomingStored = uploadRequest.GetFinalHomingValue(), HomingEaten = uploadRequest.HomingEaten, - LevelUpTime2 = uploadRequest.LevelUpTime2InSeconds.To10thMilliTime(), - LevelUpTime3 = uploadRequest.LevelUpTime3InSeconds.To10thMilliTime(), - LevelUpTime4 = uploadRequest.LevelUpTime4InSeconds.To10thMilliTime(), + LevelUpTime2 = (int)uploadRequest.LevelUpTime2.GameUnits, + LevelUpTime3 = (int)uploadRequest.LevelUpTime3.GameUnits, + LevelUpTime4 = (int)uploadRequest.LevelUpTime4.GameUnits, SubmitDate = DateTime.UtcNow, ClientVersion = uploadRequest.ClientVersion, Client = uploadRequest.Client.ClientFromString(), @@ -375,7 +374,7 @@ private async Task ProcessNewScoreAsync(UploadRequest SortedEntries = entries.Select((e, i) => ToEntryModel(e, i + 1, customLeaderboard.DaggerFromStat(e), replayIds)).ToList(), SubmissionType = SubmissionType.FirstScore, RankState = new(rank), - TimeState = new(newCustomEntry.Time.ToSecondsTime()), + TimeState = new(GameTime.FromGameUnits(newCustomEntry.Time).Seconds), EnemiesKilledState = new(newCustomEntry.EnemiesKilled), GemsCollectedState = new(newCustomEntry.GemsCollected), GemsDespawnedState = new(newCustomEntry.GemsDespawned), @@ -386,9 +385,9 @@ private async Task ProcessNewScoreAsync(UploadRequest EnemiesAliveState = new(newCustomEntry.EnemiesAlive), HomingStoredState = new(newCustomEntry.HomingStored), HomingEatenState = new(newCustomEntry.HomingEaten), - LevelUpTime2State = new(newCustomEntry.LevelUpTime2.ToSecondsTime()), - LevelUpTime3State = new(newCustomEntry.LevelUpTime3.ToSecondsTime()), - LevelUpTime4State = new(newCustomEntry.LevelUpTime4.ToSecondsTime()), + LevelUpTime2State = new(GameTime.FromGameUnits(newCustomEntry.LevelUpTime2).Seconds), + LevelUpTime3State = new(GameTime.FromGameUnits(newCustomEntry.LevelUpTime3).Seconds), + LevelUpTime4State = new(GameTime.FromGameUnits(newCustomEntry.LevelUpTime4).Seconds), }; } @@ -410,7 +409,7 @@ private async Task ProcessNoHighscoreAsync(UploadReque { SortedEntries = entries.Select((e, i) => ToEntryModel(e, i + 1, customLeaderboard.DaggerFromStat(e), replayIds)).ToList(), SubmissionType = SubmissionType.NoHighscore, - TimeState = new(uploadRequest.TimeInSeconds, uploadRequest.TimeInSeconds - currentEntry.Time.ToSecondsTime()), + TimeState = new(uploadRequest.Time.Seconds, (uploadRequest.Time - GameTime.FromGameUnits(currentEntry.Time)).Seconds), EnemiesKilledState = new(uploadRequest.EnemiesKilled, uploadRequest.EnemiesKilled - currentEntry.EnemiesKilled), GemsCollectedState = new(uploadRequest.GemsCollected, uploadRequest.GemsCollected - currentEntry.GemsCollected), GemsDespawnedState = new(uploadRequest.GemsDespawned, uploadRequest.GemsDespawned - currentEntry.GemsDespawned), @@ -421,9 +420,9 @@ private async Task ProcessNoHighscoreAsync(UploadReque EnemiesAliveState = new(uploadRequest.EnemiesAlive, uploadRequest.EnemiesAlive - currentEntry.EnemiesAlive), HomingStoredState = new(homingStored, homingStored - currentEntry.HomingStored), HomingEatenState = new(uploadRequest.HomingEaten, uploadRequest.HomingEaten - currentEntry.HomingEaten), - LevelUpTime2State = new(uploadRequest.LevelUpTime2InSeconds, uploadRequest.LevelUpTime2InSeconds - currentEntry.LevelUpTime2.ToSecondsTime()), - LevelUpTime3State = new(uploadRequest.LevelUpTime3InSeconds, uploadRequest.LevelUpTime3InSeconds - currentEntry.LevelUpTime3.ToSecondsTime()), - LevelUpTime4State = new(uploadRequest.LevelUpTime4InSeconds, uploadRequest.LevelUpTime4InSeconds - currentEntry.LevelUpTime4.ToSecondsTime()), + LevelUpTime2State = new(uploadRequest.LevelUpTime2.Seconds, (uploadRequest.LevelUpTime2 - GameTime.FromGameUnits(currentEntry.LevelUpTime2)).Seconds), + LevelUpTime3State = new(uploadRequest.LevelUpTime3.Seconds, (uploadRequest.LevelUpTime3 - GameTime.FromGameUnits(currentEntry.LevelUpTime3)).Seconds), + LevelUpTime4State = new(uploadRequest.LevelUpTime4.Seconds, (uploadRequest.LevelUpTime4 - GameTime.FromGameUnits(currentEntry.LevelUpTime4)).Seconds), }; } @@ -448,7 +447,7 @@ private async Task ProcessHighscoreAsync(UploadRequest int oldLevelUpTime4 = customEntry.LevelUpTime4; // Update score, chart data, stats, and replay. - customEntry.Time = uploadRequest.TimeInSeconds.To10thMilliTime(); + customEntry.Time = (int)uploadRequest.Time.GameUnits; customEntry.EnemiesKilled = uploadRequest.EnemiesKilled; customEntry.GemsCollected = uploadRequest.GemsCollected; customEntry.DaggersFired = uploadRequest.DaggersFired; @@ -460,9 +459,9 @@ private async Task ProcessHighscoreAsync(UploadRequest customEntry.GemsEaten = uploadRequest.GemsEaten; customEntry.GemsTotal = uploadRequest.GemsTotal; customEntry.DeathType = uploadRequest.DeathType; - customEntry.LevelUpTime2 = uploadRequest.LevelUpTime2InSeconds.To10thMilliTime(); - customEntry.LevelUpTime3 = uploadRequest.LevelUpTime3InSeconds.To10thMilliTime(); - customEntry.LevelUpTime4 = uploadRequest.LevelUpTime4InSeconds.To10thMilliTime(); + customEntry.LevelUpTime2 = (int)uploadRequest.LevelUpTime2.GameUnits; + customEntry.LevelUpTime3 = (int)uploadRequest.LevelUpTime3.GameUnits; + customEntry.LevelUpTime4 = (int)uploadRequest.LevelUpTime4.GameUnits; customEntry.SubmitDate = DateTime.UtcNow; customEntry.ClientVersion = uploadRequest.ClientVersion; customEntry.Client = uploadRequest.Client.ClientFromString(); @@ -535,7 +534,7 @@ private async Task ProcessHighscoreAsync(UploadRequest SortedEntries = entries.Select((e, i) => ToEntryModel(e, i + 1, customLeaderboard.DaggerFromStat(e), replayIds)).ToList(), SubmissionType = SubmissionType.NewHighscore, RankState = new(rank, rankDiff), - TimeState = new(customEntry.Time.ToSecondsTime(), timeDiff.ToSecondsTime()), + TimeState = new(GameTime.FromGameUnits(customEntry.Time).Seconds, GameTime.FromGameUnits(timeDiff).Seconds), EnemiesKilledState = new(customEntry.EnemiesKilled, enemiesKilledDiff), GemsCollectedState = new(customEntry.GemsCollected, gemsCollectedDiff), GemsDespawnedState = new(customEntry.GemsDespawned, gemsDespawnedDiff), @@ -546,9 +545,9 @@ private async Task ProcessHighscoreAsync(UploadRequest EnemiesAliveState = new(customEntry.EnemiesAlive, enemiesAliveDiff), HomingStoredState = new(customEntry.HomingStored, homingStoredDiff), HomingEatenState = new(customEntry.HomingEaten, homingEatenDiff), - LevelUpTime2State = new(customEntry.LevelUpTime2.ToSecondsTime(), levelUpTime2Diff.ToSecondsTime()), - LevelUpTime3State = new(customEntry.LevelUpTime3.ToSecondsTime(), levelUpTime3Diff.ToSecondsTime()), - LevelUpTime4State = new(customEntry.LevelUpTime4.ToSecondsTime(), levelUpTime4Diff.ToSecondsTime()), + LevelUpTime2State = new(GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, GameTime.FromGameUnits(levelUpTime2Diff).Seconds), + LevelUpTime3State = new(GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, GameTime.FromGameUnits(levelUpTime3Diff).Seconds), + LevelUpTime4State = new(GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, GameTime.FromGameUnits(levelUpTime4Diff).Seconds), }; } diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/DdLive/CustomLeaderboardConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/DdLive/CustomLeaderboardConverters.cs index 956eaa2a0..2bd7be5ed 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/DdLive/CustomLeaderboardConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/DdLive/CustomLeaderboardConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using DevilDaggersInfo.Web.Server.Domain.Models.CustomLeaderboards; using System.Diagnostics; @@ -24,7 +24,7 @@ public static DdLiveApi.GetCustomLeaderboardOverviewDdLive ToDdLiveApi(this Cust Category = GetCategory(customLeaderboard.RankSorting, customLeaderboard.GameMode), TopPlayerId = customLeaderboard.WorldRecord?.PlayerId, TopPlayerName = customLeaderboard.WorldRecord?.PlayerName, - WorldRecord = customLeaderboard.WorldRecord?.Time.ToSecondsTime(), + WorldRecord = customLeaderboard.WorldRecord == null ? null : GameTime.FromGameUnits(customLeaderboard.WorldRecord.Time).Seconds, WorldRecordDagger = customLeaderboard.WorldRecord?.Dagger?.ToDdLiveApi(), RankSorting = customLeaderboard.RankSorting.ToDdLiveApi(), SpawnsetGameMode = customLeaderboard.GameMode.ToDdLiveApi(), @@ -53,11 +53,11 @@ private static DdLiveApi.GetCustomLeaderboardDaggersDdLive ToDdLiveApi(this Cust { return new() { - Bronze = customLeaderboard.Bronze.ToSecondsTime(), - Silver = customLeaderboard.Silver.ToSecondsTime(), - Golden = customLeaderboard.Golden.ToSecondsTime(), - Devil = customLeaderboard.Devil.ToSecondsTime(), - Leviathan = customLeaderboard.Leviathan.ToSecondsTime(), + Bronze = GameTime.FromGameUnits(customLeaderboard.Bronze).Seconds, + Silver = GameTime.FromGameUnits(customLeaderboard.Silver).Seconds, + Golden = GameTime.FromGameUnits(customLeaderboard.Golden).Seconds, + Devil = GameTime.FromGameUnits(customLeaderboard.Devil).Seconds, + Leviathan = GameTime.FromGameUnits(customLeaderboard.Leviathan).Seconds, }; } @@ -80,13 +80,13 @@ private static DdLiveApi.GetCustomEntryDdLive ToDdLiveApi(this CustomEntry custo HomingStored = customEntry.HomingStored, HomingEaten = customEntry.HomingEaten, EnemiesKilled = customEntry.EnemiesKilled, - LevelUpTime2 = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3 = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4 = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2 = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3 = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4 = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, DaggersFired = customEntry.DaggersFired, DaggersHit = customEntry.DaggersHit, SubmitDate = customEntry.SubmitDate, - Time = customEntry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(customEntry.Time).Seconds, CustomLeaderboardDagger = customEntry.CustomLeaderboardDagger?.ToDdLiveApi(), HasGraphs = customEntry.HasGraphs, HasReplay = hasReplay, diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Ddse/SpawnsetConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Ddse/SpawnsetConverters.cs index b6162d920..b40740f70 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Ddse/SpawnsetConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Ddse/SpawnsetConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using System.Diagnostics; @@ -23,12 +23,12 @@ public static DdseApi.GetSpawnsetDdse ToDdseApi(this SpawnsetEntity spawnset, bo AdditionalGems = spawnset.EffectiveGemsOrHoming, GameMode = spawnset.GameMode.ToDdseApi(), Hand = (byte)spawnset.EffectiveHandLevel, - LoopLength = (float?)spawnset.LoopLength?.ToSecondsTime(), + LoopLength = spawnset.LoopLength.HasValue ? (float)GameTime.FromGameUnits(spawnset.LoopLength.Value).Seconds : null, LoopSpawnCount = spawnset.LoopSpawnCount, - NonLoopLength = (float?)spawnset.PreLoopLength?.ToSecondsTime(), + NonLoopLength = spawnset.PreLoopLength.HasValue ? (float)GameTime.FromGameUnits(spawnset.PreLoopLength.Value).Seconds : null, NonLoopSpawnCount = spawnset.PreLoopSpawnCount, SpawnVersion = spawnset.SpawnVersion, - TimerStart = (float)spawnset.TimerStart.ToSecondsTime(), + TimerStart = (float)GameTime.FromGameUnits(spawnset.TimerStart).Seconds, WorldVersion = spawnset.WorldVersion, }, Name = spawnset.Name, diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/CustomLeaderboardConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/CustomLeaderboardConverters.cs index e6a9220f1..b318d8dac 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/CustomLeaderboardConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/CustomLeaderboardConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; @@ -76,13 +76,13 @@ private static MainApi.GetCustomEntry ToMainApi(this CustomEntry customEntry, Sp HomingStored = customEntry.HomingStored, HomingEaten = customEntry.HomingEaten, EnemiesKilled = customEntry.EnemiesKilled, - LevelUpTime2 = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3 = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4 = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2 = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3 = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4 = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, DaggersFired = customEntry.DaggersFired, DaggersHit = customEntry.DaggersHit, SubmitDate = customEntry.SubmitDate, - Time = customEntry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(customEntry.Time).Seconds, CustomLeaderboardDagger = customEntry.CustomLeaderboardDagger?.ToMainApi(), HasGraphs = customEntry.HasGraphs, }; @@ -92,11 +92,11 @@ private static MainApi.GetCustomLeaderboardDaggers ToMainApi(this CustomLeaderbo { return new() { - Bronze = isTime ? customLeaderboardDaggers.Bronze.ToSecondsTime() : customLeaderboardDaggers.Bronze, - Silver = isTime ? customLeaderboardDaggers.Silver.ToSecondsTime() : customLeaderboardDaggers.Silver, - Golden = isTime ? customLeaderboardDaggers.Golden.ToSecondsTime() : customLeaderboardDaggers.Golden, - Devil = isTime ? customLeaderboardDaggers.Devil.ToSecondsTime() : customLeaderboardDaggers.Devil, - Leviathan = isTime ? customLeaderboardDaggers.Leviathan.ToSecondsTime() : customLeaderboardDaggers.Leviathan, + Bronze = isTime ? GameTime.FromGameUnits(customLeaderboardDaggers.Bronze).Seconds : customLeaderboardDaggers.Bronze, + Silver = isTime ? GameTime.FromGameUnits(customLeaderboardDaggers.Silver).Seconds : customLeaderboardDaggers.Silver, + Golden = isTime ? GameTime.FromGameUnits(customLeaderboardDaggers.Golden).Seconds : customLeaderboardDaggers.Golden, + Devil = isTime ? GameTime.FromGameUnits(customLeaderboardDaggers.Devil).Seconds : customLeaderboardDaggers.Devil, + Leviathan = isTime ? GameTime.FromGameUnits(customLeaderboardDaggers.Leviathan).Seconds : customLeaderboardDaggers.Leviathan, }; } @@ -261,13 +261,13 @@ public static MainApi.GetCustomEntryData ToMainApi(this CustomEntryEntity custom HomingStored = customEntry.HomingStored, HomingEaten = customEntry.HomingEaten, EnemiesKilled = customEntry.EnemiesKilled, - LevelUpTime2 = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3 = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4 = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2 = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3 = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4 = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, DaggersFired = customEntry.DaggersFired, DaggersHit = customEntry.DaggersHit, SubmitDate = customEntry.SubmitDate, - Time = customEntry.Time.ToSecondsTime(), + Time = GameTime.FromGameUnits(customEntry.Time).Seconds, CustomLeaderboardDagger = customEntry.CustomLeaderboard.DaggerFromStat(customEntry)?.ToMainApi(), GemsCollectedData = GetInt32Arr(customEntryData?.GemsCollectedData), diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardConverters.cs index 3dc84848e..f0245bc05 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.ApiSpec.Main.Leaderboards; using DevilDaggersInfo.Web.Server.Domain.Services.Inversion; @@ -19,7 +19,7 @@ public static GetLeaderboard ToMainApi(this IDdLeaderboardService.LeaderboardRes GemsGlobal = leaderboardResponse.GemsGlobal, KillsGlobal = leaderboardResponse.KillsGlobal, TotalPlayers = leaderboardResponse.TotalPlayers, - TimeGlobal = leaderboardResponse.TimeGlobal == 0 ? 0 : leaderboardResponse.TimeGlobal.ToSecondsTime(), + TimeGlobal = leaderboardResponse.TimeGlobal == 0 ? 0 : GameTime.FromGameUnits(leaderboardResponse.TimeGlobal).Seconds, }; } @@ -39,8 +39,8 @@ public static GetEntry ToMainApi(this IDdLeaderboardService.EntryResponse entryR Kills = entryResponse.Kills, KillsTotal = entryResponse.KillsTotal, Rank = entryResponse.Rank, - Time = entryResponse.Time.ToSecondsTime(), - TimeTotal = entryResponse.TimeTotal.ToSecondsTime(), + Time = GameTime.FromGameUnits(entryResponse.Time).Seconds, + TimeTotal = GameTime.FromGameUnits(entryResponse.TimeTotal).Seconds, Username = entryResponse.Username, }; } diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardHistoryConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardHistoryConverters.cs index e5878f4e4..1b3a81a33 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardHistoryConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/LeaderboardHistoryConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.ApiSpec.Main.LeaderboardHistory; using DevilDaggersInfo.Web.Server.Domain.Models.LeaderboardHistory; @@ -17,7 +17,7 @@ public static GetLeaderboardHistory ToMainApi(this LeaderboardHistory leaderboar Entries = leaderboard.Entries.ConvertAll(eh => eh.ToMainApi(leaderboard.DateTime)), GemsGlobal = leaderboard.GemsGlobal, KillsGlobal = leaderboard.KillsGlobal, - TimeGlobal = leaderboard.TimeGlobal.ToSecondsTime(), + TimeGlobal = GameTime.FromGameUnits(leaderboard.TimeGlobal).Seconds, TotalPlayers = leaderboard.Players, }; } @@ -39,8 +39,8 @@ private static GetEntryHistory ToMainApi(this EntryHistory entry, DateTime dateT Kills = entry.Kills, KillsTotal = entry.KillsTotal, Rank = entry.Rank, - Time = entry.Time.ToSecondsTime(), - TimeTotal = entry.TimeTotal.ToSecondsTime(), + Time = GameTime.FromGameUnits(entry.Time).Seconds, + TimeTotal = GameTime.FromGameUnits(entry.TimeTotal).Seconds, Username = entry.Username, }; } diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/SpawnsetConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/SpawnsetConverters.cs index 2f59d1c86..9f9d7d7b8 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/SpawnsetConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Main/SpawnsetConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using DevilDaggersInfo.Web.Server.Domain.Main.Converters.DomainToApi; @@ -21,9 +21,9 @@ public static MainApi.GetSpawnsetOverview ToMainApi(this SpawnsetEntity spawnset GameMode = spawnset.GameMode.ToMainApi(), Hand = spawnset.EffectiveHandLevel.ToMainApi(), Id = spawnset.Id, - LoopLength = spawnset.LoopLength?.ToSecondsTime(), + LoopLength = spawnset.LoopLength.HasValue ? GameTime.FromGameUnits(spawnset.LoopLength.Value).Seconds : null, LoopSpawnCount = spawnset.LoopSpawnCount, - PreLoopLength = spawnset.PreLoopLength?.ToSecondsTime(), + PreLoopLength = spawnset.PreLoopLength.HasValue ? GameTime.FromGameUnits(spawnset.PreLoopLength.Value).Seconds : null, PreLoopSpawnCount = spawnset.PreLoopSpawnCount, AuthorName = spawnset.Player.PlayerName, LastUpdated = spawnset.LastUpdated, diff --git a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Tools/CustomLeaderboardConverters.cs b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Tools/CustomLeaderboardConverters.cs index 57030f23c..6bef2bb92 100644 --- a/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Tools/CustomLeaderboardConverters.cs +++ b/src/DevilDaggersInfo.Web.Server/Converters/DomainToApi/Tools/CustomLeaderboardConverters.cs @@ -1,4 +1,4 @@ -using DevilDaggersInfo.Core.Common.Extensions; +using DevilDaggersInfo.Core.Common; using DevilDaggersInfo.Core.CriteriaExpression; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using DevilDaggersInfo.Web.Server.Domain.Extensions; @@ -173,11 +173,11 @@ private static ToolsApi.GetCustomLeaderboardDaggers ToAppApi(this CustomLeaderbo { return new() { - Bronze = customLeaderboardDaggers.Bronze.ToSecondsTime(), - Silver = customLeaderboardDaggers.Silver.ToSecondsTime(), - Golden = customLeaderboardDaggers.Golden.ToSecondsTime(), - Devil = customLeaderboardDaggers.Devil.ToSecondsTime(), - Leviathan = customLeaderboardDaggers.Leviathan.ToSecondsTime(), + Bronze = GameTime.FromGameUnits(customLeaderboardDaggers.Bronze).Seconds, + Silver = GameTime.FromGameUnits(customLeaderboardDaggers.Silver).Seconds, + Golden = GameTime.FromGameUnits(customLeaderboardDaggers.Golden).Seconds, + Devil = GameTime.FromGameUnits(customLeaderboardDaggers.Devil).Seconds, + Leviathan = GameTime.FromGameUnits(customLeaderboardDaggers.Leviathan).Seconds, }; } @@ -228,14 +228,14 @@ private static ToolsApi.GetCustomEntry ToAppApi(this CustomEntry customEntry) HomingEaten = customEntry.HomingEaten, HomingStored = customEntry.HomingStored, Id = customEntry.Id, - LevelUpTime2InSeconds = customEntry.LevelUpTime2.ToSecondsTime(), - LevelUpTime3InSeconds = customEntry.LevelUpTime3.ToSecondsTime(), - LevelUpTime4InSeconds = customEntry.LevelUpTime4.ToSecondsTime(), + LevelUpTime2InSeconds = GameTime.FromGameUnits(customEntry.LevelUpTime2).Seconds, + LevelUpTime3InSeconds = GameTime.FromGameUnits(customEntry.LevelUpTime3).Seconds, + LevelUpTime4InSeconds = GameTime.FromGameUnits(customEntry.LevelUpTime4).Seconds, PlayerId = customEntry.PlayerId, PlayerName = customEntry.PlayerName, Rank = customEntry.Rank, SubmitDate = customEntry.SubmitDate, - TimeInSeconds = customEntry.Time.ToSecondsTime(), + TimeInSeconds = GameTime.FromGameUnits(customEntry.Time).Seconds, CustomLeaderboardDagger = customEntry.CustomLeaderboardDagger?.ToAppApi(), }; } diff --git a/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardHighscoreLogger.cs b/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardHighscoreLogger.cs index 3ca0527ab..7a0768547 100644 --- a/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardHighscoreLogger.cs +++ b/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardHighscoreLogger.cs @@ -1,5 +1,4 @@ using DevilDaggersInfo.Core.Common; -using DevilDaggersInfo.Core.Common.Extensions; using DevilDaggersInfo.Web.Server.Domain.Entities; using DevilDaggersInfo.Web.Server.Domain.Entities.Enums; using DevilDaggersInfo.Web.Server.Domain.Models.CustomLeaderboards; @@ -111,7 +110,7 @@ private static string GetFormattedScoreValue(CustomLeaderboardRankSorting rankSo { return rankSorting switch { - CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => customEntry.Time.ToSecondsTime().ToString(StringFormats.TimeFormat), + CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => GameTime.FromGameUnits(customEntry.Time).Seconds.ToString(StringFormats.TimeFormat), CustomLeaderboardRankSorting.GemsCollectedAsc or CustomLeaderboardRankSorting.GemsCollectedDesc => customEntry.GemsCollected.ToString(), CustomLeaderboardRankSorting.GemsDespawnedAsc or CustomLeaderboardRankSorting.GemsDespawnedDesc => customEntry.GemsDespawned.ToString(), CustomLeaderboardRankSorting.GemsEatenAsc or CustomLeaderboardRankSorting.GemsEatenDesc => customEntry.GemsEaten.ToString(), @@ -127,7 +126,7 @@ private static string GetFormattedScoreValueDifference(CustomLeaderboardRankSort { return rankSorting switch { - CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => valueDifference.ToSecondsTime().ToString("+0.0000;-0.0000;+0.0000"), + CustomLeaderboardRankSorting.TimeAsc or CustomLeaderboardRankSorting.TimeDesc => GameTime.FromGameUnits(valueDifference).Seconds.ToString("+0.0000;-0.0000;+0.0000"), _ => valueDifference.ToString("+0;-0;+0"), }; } diff --git a/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardSubmissionLogger.cs b/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardSubmissionLogger.cs index e69a99731..9a76aa3dc 100644 --- a/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardSubmissionLogger.cs +++ b/src/DevilDaggersInfo.Web.Server/Services/CustomLeaderboardSubmissionLogger.cs @@ -25,7 +25,7 @@ public void ClearLogs(bool valid) public void Log(UploadRequest uploadRequest, string spawnsetName, double elapsedMilliseconds, string? errorMessage) { string playerInfo = $"{uploadRequest.PlayerName} ({uploadRequest.PlayerId})"; - string time = uploadRequest.TimeInSeconds.ToString(StringFormats.TimeFormat); + string time = uploadRequest.Time.Seconds.ToString(StringFormats.TimeFormat); string requestInfo = $"{uploadRequest.Client} {uploadRequest.ClientVersion} {uploadRequest.OperatingSystem} {uploadRequest.BuildMode} | Replay size {uploadRequest.ReplayData.Length:N0} bytes | Status {uploadRequest.Status}"; List timestampEntries = [];