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