using Content.Server.Objectives.Components;
using Content.Shared.Objectives.Components;
using JetBrains.Annotations;
namespace Content.Server.Objectives.Systems;
///
/// This system handles returning the progress for CounterConditionComponents,
/// which simple increment for traitor NumberObjectives, e.g. cut into 12 envelopes.
///
public sealed partial class CounterConditionSystem : EntitySystem
{
[Dependency] private NumberObjectiveSystem _number = default!;
[Dependency] private EntityQuery _compQuery = default!;
///
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnCounterGetProgress);
}
private void OnCounterGetProgress(Entity ent, ref ObjectiveGetProgressEvent args)
{
args.Progress = GetProgress(ent, _number.GetTarget(ent.Owner));
}
private float GetProgress(Entity ent, int target)
{
// prevent divide-by-zero
if (target == 0)
return 1f;
if (ent.Comp.Count >= target)
return 1f;
return (float)ent.Comp.Count / target;
}
[PublicAPI]
public void IncreaseCount(Entity objective)
{
if (_compQuery.Resolve(objective, ref objective.Comp))
{
objective.Comp.Count++;
}
}
}