using System.Diagnostics.CodeAnalysis; using Content.Shared.Players; using Content.Shared.CCVar; using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Roles; using Robust.Shared.Configuration; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Preferences.Loadouts.Effects; /// /// Checks for a job requirement to be met such as playtime. /// public sealed partial class JobRequirementLoadoutEffect : LoadoutEffect { [DataField(required: true)] public JobRequirement Requirement = default!; public override bool Validate(HumanoidCharacterProfile profile, RoleLoadout loadout, ICommonSession? session, IDependencyCollection collection, [NotNullWhen(false)] out FormattedMessage? reason) { var configurationManager = collection.Resolve(); var timersDisabled = !configurationManager.GetCVar(CCVars.GameRoleLoadoutTimers); if (session == null || timersDisabled) { reason = FormattedMessage.Empty; return true; } var manager = collection.Resolve(); var playtimes = manager.GetPlayTimes(session); var isWhitelisted = session.ContentData()?.Whitelisted ?? false; // DeltaV - Whitelist requirement return Requirement.Check(collection.Resolve(), collection.Resolve(), profile, playtimes, out reason, isWhitelisted); // DeltaV } }