2024-04-29 14:13:04 +02:00
|
|
|
using System.Text.Json.Serialization;
|
|
|
|
|
2024-04-13 18:35:36 +02:00
|
|
|
namespace TanksServer.Models;
|
|
|
|
|
2024-04-21 23:00:44 +02:00
|
|
|
internal sealed record class Scores
|
2024-04-13 18:35:36 +02:00
|
|
|
{
|
2024-04-21 23:00:44 +02:00
|
|
|
public int Kills { get; set; }
|
2024-04-13 18:35:36 +02:00
|
|
|
|
2024-04-21 23:00:44 +02:00
|
|
|
public int Deaths { get; set; }
|
2024-04-14 18:26:13 +02:00
|
|
|
|
|
|
|
public double Ratio
|
|
|
|
{
|
|
|
|
get
|
|
|
|
{
|
|
|
|
if (Kills == 0)
|
|
|
|
return 0;
|
|
|
|
if (Deaths == 0)
|
|
|
|
return Kills;
|
2024-04-21 23:00:44 +02:00
|
|
|
return Math.Round(Kills / (double)Deaths, 3);
|
2024-04-14 18:26:13 +02:00
|
|
|
}
|
|
|
|
}
|
2024-04-19 13:34:56 +02:00
|
|
|
|
|
|
|
public int WallsDestroyed { get; set; }
|
2024-04-22 21:26:46 +02:00
|
|
|
|
|
|
|
public int ShotsFired { get; set; }
|
|
|
|
|
2024-04-29 13:54:29 +02:00
|
|
|
public int PowerUpsCollected { get; set; }
|
|
|
|
|
2024-04-29 14:13:04 +02:00
|
|
|
[JsonIgnore] public double DistanceMoved { get; set; }
|
|
|
|
|
|
|
|
public int PixelsMoved => (int)DistanceMoved;
|
|
|
|
|
2024-04-29 13:54:29 +02:00
|
|
|
public int OverallScore => Math.Max(0,
|
|
|
|
10000 * Kills
|
|
|
|
- 1000 * Deaths
|
|
|
|
+ 100 * PowerUpsCollected
|
|
|
|
+ 10 * (ShotsFired + WallsDestroyed)
|
2024-04-29 14:13:04 +02:00
|
|
|
+ PixelsMoved
|
2024-04-29 13:54:29 +02:00
|
|
|
);
|
2024-04-13 18:35:36 +02:00
|
|
|
}
|