| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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<ShowJobIconsComponent>
- {
- [Dependency] private readonly IPrototypeManager _prototype = default!;
- [Dependency] private readonly AccessReaderSystem _accessReader = default!;
- [ValidatePrototypeId<JobIconPrototype>]
- private const string JobIconForNoId = "JobIconNoId";
- public override void Initialize()
- {
- base.Initialize();
- SubscribeLocalEvent<StatusIconComponent, GetStatusIconsEvent>(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<IdCardComponent>(item, out var id))
- {
- iconId = id.JobIcon;
- break;
- }
- // PDA
- if (TryComp<PdaComponent>(item, out var pda)
- && pda.ContainedId != null
- && TryComp(pda.ContainedId, out id))
- {
- iconId = id.JobIcon;
- break;
- }
- }
- }
- if (_prototype.TryIndex<JobIconPrototype>(iconId, out var iconPrototype))
- ev.StatusIcons.Add(iconPrototype);
- else
- Log.Error($"Invalid job icon prototype: {iconPrototype}");
- }
- }
|