using Content.Shared.CCVar; using Content.Shared.Mind; using Content.Shared.Preferences; using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; using Robust.Shared.Network; namespace Content.Shared.Customization.Systems; /// /// Requires the player to be whitelisted if whitelists are enabled /// [UsedImplicitly] [Serializable, NetSerializable] public sealed partial class CharacterWhitelistRequirement : CharacterRequirement { public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, Dictionary playTimes, bool whitelisted, IPrototype prototype, IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, out string? reason, int depth = 0, MindComponent? mind = null) { reason = null; if (!configManager.IsCVarRegistered("whitelist.enabled")) return whitelisted; reason = Loc.GetString("character-whitelist-requirement", ("inverted", Inverted)); return !configManager.GetCVar(CCVars.WhitelistEnabled) || whitelisted; } }