using Content.Shared.Access.Systems; using Content.Shared.PDA; using Content.Shared.Roles; using Content.Shared.StatusIcon; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Access.Components; [RegisterComponent, NetworkedComponent] [AutoGenerateComponentState] [Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)] public sealed partial class IdCardComponent : Component { [DataField] [AutoNetworkedField] // FIXME Friends public string? FullName; [DataField] [AutoNetworkedField] [Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)] public LocId? JobTitle; [DataField] [AutoNetworkedField] private string? _jobTitle; [Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWriteExecute)] public string? LocalizedJobTitle { set => _jobTitle = value; get => _jobTitle ?? Loc.GetString(JobTitle ?? string.Empty); } /// /// The state of the job icon rsi. /// [DataField] [AutoNetworkedField] public ProtoId JobIcon = "JobIconUnknown"; /// /// The proto IDs of the departments associated with the job /// [DataField] [AutoNetworkedField] public List> JobDepartments = new(); /// /// Determines if accesses from this card should be logged by /// [DataField] public bool BypassLogging; [DataField] public LocId NameLocId = "access-id-card-component-owner-name-job-title-text"; [DataField] public LocId FullNameLocId = "access-id-card-component-owner-full-name-job-title-text"; [DataField] public bool CanMicrowave = true; }