* The easy ones * For certain values of easy * Easy test * Hair * Fix sandbox violations * Sort usings
60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
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!;
|
|
|
|
private static readonly ProtoId<JobIconPrototype> 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(iconId, out var iconPrototype))
|
|
ev.StatusIcons.Add(iconPrototype);
|
|
else
|
|
Log.Error($"Invalid job icon prototype: {iconPrototype}");
|
|
}
|
|
}
|