using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Overlays; using Content.Shared.PDA; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; using Robust.Shared.Prototypes; namespace Content.Client.Overlays; public sealed class ShowJobIconsSystem : EquipmentHudSystem { [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly AccessReaderSystem _accessReader = default!; private static readonly ProtoId JobIconForNoId = "JobIconNoId"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnGetStatusIconsEvent); } private void OnGetStatusIconsEvent(EntityUid uid, StatusIconComponent _, ref GetStatusIconsEvent ev) { if (!IsActive) return; var iconId = JobIconForNoId; if (_accessReader.FindAccessItemsInventory(uid, out var items)) { foreach (var item in items) { // ID Card if (TryComp(item, out var id)) { iconId = id.JobIcon; break; } // PDA if (TryComp(item, out var pda) && pda.ContainedId != null && TryComp(pda.ContainedId, out id)) { iconId = id.JobIcon; break; } } } if (_prototype.TryIndex(iconId, out var iconPrototype)) ev.StatusIcons.Add(iconPrototype); else Log.Error($"Invalid job icon prototype: {iconPrototype}"); } }