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);
}
}