using Content.Client.Overlays; using Content.Shared._DV.MedicalRecords; using Content.Shared._DV.Overlays; using Content.Shared.Access.Systems; using Content.Shared.Overlays; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; using Robust.Client.Player; using Robust.Shared.Prototypes; namespace Content.Client._DV.Overlays; public sealed class ShowTriageIconsSystem : EquipmentHudSystem { [Dependency] private readonly SharedIdCardSystem _idCard = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IPlayerManager _player = default!; private static ProtoId Minor = "TriageStatusMinor"; private static ProtoId Delayed = "TriageStatusDelayed"; private static ProtoId Immediate = "TriageStatusImmediate"; private static ProtoId Expectant = "TriageStatusExpectant"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnGetStatusIconsEvent); } private void OnGetStatusIconsEvent(Entity ent, ref GetStatusIconsEvent ev) { if (!IsActive) return; var triageStatusIcon = ent.Comp.Record.Status switch { TriageStatus.None => null, TriageStatus.Minor => _prototype.Index(Minor), TriageStatus.Delayed => _prototype.Index(Delayed), TriageStatus.Immediate => _prototype.Index(Immediate), TriageStatus.Expectant => _prototype.Index(Expectant), }; if (triageStatusIcon is not {} statusPrototype) return; ev.StatusIcons.Add(statusPrototype); if (ent.Comp.Record.ClaimedName is {} claimedName) { if (_player.LocalEntity is {} local && _idCard.TryFindIdCard(local, out var idCard) && idCard.Comp.FullName == claimedName) { ev.StatusIcons.Add(_prototype.Index("TriageClaimedYours")); } else { ev.StatusIcons.Add(_prototype.Index("TriageClaimedOthers")); } } else { ev.StatusIcons.Add(_prototype.Index("TriageUnclaimed")); } } }