UI/HUD/RoundTracker.cs
using System.Collections.Generic;
using Sandbox;
public sealed class RoundTracker : Component
{
public static RoundTracker Instance { get; private set; }
public int KillsCount { get; private set; } = 0;
public Dictionary<CrowdAction, int> PlayerActionsCount { get; } = new();
protected override void OnAwake()
{
Instance = this;
}
protected override void OnEnabled()
{
CrowdEvaluator.OnEvaluatedCrowdAction += TrackAction;
GameManager.OnPhaseChanged += HandlePhase;
}
protected override void OnDisabled()
{
CrowdEvaluator.OnEvaluatedCrowdAction -= TrackAction;
GameManager.OnPhaseChanged -= HandlePhase;
}
private void HandlePhase( GamePhase phase )
{
if ( phase == GamePhase.RoundIntro )
{
KillsCount = 0;
PlayerActionsCount.Clear();
}
}
private void TrackAction( CrowdEventPayload payload, CrowdActionDefinition def )
{
if ( payload.Actor?.Components.Get<PlayerController>() == null ) return;
if ( !PlayerActionsCount.ContainsKey( payload.Action ) )
PlayerActionsCount[payload.Action] = 0;
PlayerActionsCount[payload.Action]++;
if ( payload.Action is CrowdAction.Decapitation
or CrowdAction.Impale
or CrowdAction.Finisher
or CrowdAction.EnvironmentalKill
or CrowdAction.UnfairFightKill
or CrowdAction.UnsatisfyingKill )
{
KillsCount++;
}
}
}