Files
tbd-station-14/Content.Server/Access/Systems/PresetIdCardSystem.cs
2022-02-16 18:23:23 +11:00

43 lines
1.4 KiB
C#

using Content.Server.Access.Components;
using Content.Shared.Access.Systems;
using Content.Shared.Roles;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Prototypes;
using System;
namespace Content.Server.Access.Systems
{
public sealed class PresetIdCardSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IdCardSystem _cardSystem = default!;
[Dependency] private readonly AccessSystem _accessSystem = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<PresetIdCardComponent, MapInitEvent>(OnMapInit);
}
private void OnMapInit(EntityUid uid, PresetIdCardComponent id, MapInitEvent args)
{
if (id.JobName == null) return;
if (!_prototypeManager.TryIndex(id.JobName, out JobPrototype? job))
{
Logger.ErrorS("access", $"Invalid job id ({id.JobName}) for preset card");
return;
}
// set access for access component
_accessSystem.TrySetTags(uid, job.Access);
_accessSystem.TryAddGroups(uid, job.AccessGroups);
// and also change job title on a card id
_cardSystem.TryChangeJobTitle(uid, job.Name);
}
}
}