using System.Diagnostics.CodeAnalysis; 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); return Requirement.Check(collection.Resolve(), collection.Resolve(), profile, playtimes, out reason); } }