Files
tbd-station-14/Content.Server/Access/Systems/IdBindSystem.cs
Verm dd308c6d2d Makes EventRole Ids properly set ID names. (#28958)
* Add id binding system

* Change so it activates when added too

* Add to eventhumanoid

* Add PDA binding, try to fix some things

* Still not fixed, PDA is working right

* Move to server, add on mind instead

* Implement suggestions

* Fix things

* Finish review stuff

* Messed up cluwne

* Remove after only changing id too

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
2025-04-21 14:25:22 -04:00

52 lines
1.4 KiB
C#

using Content.Server.Access.Components;
using Content.Server.PDA;
using Content.Shared.Inventory;
using Content.Shared.Mind.Components;
using Content.Shared.PDA;
using Content.Shared.Roles;
namespace Content.Server.Access.Systems;
public sealed class IdBindSystem : EntitySystem
{
[Dependency] private readonly IdCardSystem _cardSystem = default!;
[Dependency] private readonly PdaSystem _pdaSystem = default!;
[Dependency] private readonly InventorySystem _inventory = default!;
public override void Initialize()
{
base.Initialize();
//Activate on mind being added
SubscribeLocalEvent<IdBindComponent, MindAddedMessage>(TryBind);
}
private void TryBind(Entity<IdBindComponent> ent, ref MindAddedMessage args)
{
if (!_cardSystem.TryFindIdCard(ent, out var cardId))
return;
var data = MetaData(ent);
_cardSystem.TryChangeFullName(cardId, data.EntityName, cardId);
if (!ent.Comp.BindPDAOwner)
{
//Remove after running once
RemCompDeferred<IdBindComponent>(ent);
return;
}
//Get PDA from main slot and set us as owner
if (!_inventory.TryGetSlotEntity(ent, "id", out var uPda))
return;
if (!TryComp<PdaComponent>(uPda, out var pDA))
return;
_pdaSystem.SetOwner(uPda.Value, pDA, ent, data.EntityName);
//Remove after running once
RemCompDeferred<IdBindComponent>(ent);
}
}