40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// Checks for a job requirement to be met such as playtime.
|
|
/// </summary>
|
|
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<IConfigurationManager>();
|
|
var timersDisabled = !configurationManager.GetCVar(CCVars.GameRoleLoadoutTimers);
|
|
|
|
if (session == null || timersDisabled)
|
|
{
|
|
reason = FormattedMessage.Empty;
|
|
return true;
|
|
}
|
|
|
|
var manager = collection.Resolve<ISharedPlaytimeManager>();
|
|
var playtimes = manager.GetPlayTimes(session);
|
|
return Requirement.Check(collection.Resolve<IEntityManager>(),
|
|
collection.Resolve<IPrototypeManager>(),
|
|
profile,
|
|
playtimes,
|
|
out reason);
|
|
}
|
|
}
|