using Content.Shared.Popups; using Content.Shared.UserInterface; using Content.Shared.Access.Components; namespace Content.Shared.Access.Systems; public sealed partial class ActivatableUIRequiresAccessSystem : EntitySystem { [Dependency] private AccessReaderSystem _access = default!; [Dependency] private SharedPopupSystem _popup = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnUIOpenAttempt); } private void OnUIOpenAttempt(Entity activatableUI, ref ActivatableUIOpenAttemptEvent args) { if (args.Cancelled) return; if (!_access.IsAllowed(args.User, activatableUI)) { args.Cancel(); if (activatableUI.Comp.PopupMessage != null && !args.Silent) _popup.PopupEntity(Loc.GetString(activatableUI.Comp.PopupMessage), activatableUI, args.User); } } }