1
0

TeamDeathMatchRuleComponent.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Content.Shared.FixedPoint;
  2. using Content.Shared.Roles;
  3. using Content.Shared.Storage;
  4. using Robust.Shared.Network;
  5. using Robust.Shared.Prototypes;
  6. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
  7. namespace Content.Server.GameTicking.Rules.Components;
  8. /// <summary>
  9. /// Gamerule that tracks stats for TDM gamemodes
  10. /// </summary>
  11. [RegisterComponent, Access(typeof(TeamDeathMatchRuleSystem))]
  12. public sealed partial class TeamDeathMatchRuleComponent : Component
  13. {
  14. [DataField("team1")]
  15. public string Team1 = "";
  16. [DataField("team1Points")]
  17. public int Team1Points = 0;
  18. [DataField("team1Deaths")]
  19. public int Team1Deaths = 0;
  20. [DataField("team1Kills")]
  21. public int Team1Kills = 0;
  22. [DataField("team2")]
  23. public string Team2 = "";
  24. [DataField("team2Points")]
  25. public int Team2Points = 0;
  26. [DataField("team2Deaths")]
  27. public int Team2Deaths = 0;
  28. [DataField("team2Kills")]
  29. public int Team2Kills = 0;
  30. [DataField("kdRatio")]
  31. public Dictionary<string, PlayerKDStats> KDRatio = new();
  32. }
  33. // Add this class to track player stats
  34. [DataDefinition, Serializable]
  35. public sealed partial class PlayerKDStats
  36. {
  37. [DataField("kills")]
  38. public int Kills = 0;
  39. [DataField("deaths")]
  40. public int Deaths = 0;
  41. [DataField("team")]
  42. public string Team = "";
  43. [DataField("name")]
  44. public string Name = "";
  45. public float KDRatio => Deaths == 0 ? Kills : (float)Kills / Deaths;
  46. }