| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- using System.Diagnostics.CodeAnalysis;
- using Content.Shared.Localizations;
- using Content.Shared.Players.PlayTimeTracking;
- using Content.Shared.Preferences;
- using JetBrains.Annotations;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization;
- using Robust.Shared.Utility;
- namespace Content.Shared.Roles;
- [UsedImplicitly]
- [Serializable, NetSerializable]
- public sealed partial class OverallPlaytimeRequirement : JobRequirement
- {
- /// <inheritdoc cref="DepartmentTimeRequirement.Time"/>
- [DataField(required: true)]
- public TimeSpan Time;
- public override bool Check(IEntityManager entManager,
- IPrototypeManager protoManager,
- HumanoidCharacterProfile? profile,
- IReadOnlyDictionary<string, TimeSpan> playTimes,
- [NotNullWhen(false)] out FormattedMessage? reason)
- {
- reason = new FormattedMessage();
- var overallTime = playTimes.GetValueOrDefault(PlayTimeTrackingShared.TrackerOverall);
- var overallDiffSpan = Time - overallTime;
- var overallDiff = overallDiffSpan.TotalMinutes;
- var formattedOverallDiff = ContentLocalizationManager.FormatPlaytime(overallDiffSpan);
- if (!Inverted)
- {
- if (overallDiff <= 0 || overallTime >= Time)
- return true;
- reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
- "role-timer-overall-insufficient",
- ("time", formattedOverallDiff)));
- return false;
- }
- if (overallDiff <= 0 || overallTime >= Time)
- {
- reason = FormattedMessage.FromMarkupPermissive(Loc.GetString("role-timer-overall-too-high",
- ("time", formattedOverallDiff)));
- return false;
- }
- return true;
- }
- }
|