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 = [];