servicepoint-tanks/tanks-backend/TanksServer/Models/Scores.cs

41 lines
865 B
C#
Raw Normal View History

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; }
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-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
}