1
0

JobRequirementLoadoutEffect.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System.Diagnostics.CodeAnalysis;
  2. using Content.Shared.Players.PlayTimeTracking;
  3. using Content.Shared.Roles;
  4. using Robust.Shared.Player;
  5. using Robust.Shared.Prototypes;
  6. using Robust.Shared.Utility;
  7. namespace Content.Shared.Preferences.Loadouts.Effects;
  8. /// <summary>
  9. /// Checks for a job requirement to be met such as playtime.
  10. /// </summary>
  11. public sealed partial class JobRequirementLoadoutEffect : LoadoutEffect
  12. {
  13. [DataField(required: true)]
  14. public JobRequirement Requirement = default!;
  15. public override bool Validate(HumanoidCharacterProfile profile, RoleLoadout loadout, ICommonSession? session, IDependencyCollection collection, [NotNullWhen(false)] out FormattedMessage? reason)
  16. {
  17. if (session == null)
  18. {
  19. reason = FormattedMessage.Empty;
  20. return true;
  21. }
  22. var manager = collection.Resolve<ISharedPlaytimeManager>();
  23. var playtimes = manager.GetPlayTimes(session);
  24. return Requirement.Check(collection.Resolve<IEntityManager>(),
  25. collection.Resolve<IPrototypeManager>(),
  26. profile,
  27. playtimes,
  28. out reason);
  29. }
  30. }