From 8c5a9554f27776564663d52a29f94eab4b9a7dd2 Mon Sep 17 00:00:00 2001
From: 778b <33431126+778b@users.noreply.github.com>
Date: Tue, 10 Jan 2023 16:44:40 +0400
Subject: [PATCH] Clean up the JobRequirements (#13374)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Closes https://github.com/space-wizards/space-station-14/issues/13348
---
Content.Shared/Roles/JobRequirements.cs | 35 ++++++++++++++++---------
1 file changed, 23 insertions(+), 12 deletions(-)
diff --git a/Content.Shared/Roles/JobRequirements.cs b/Content.Shared/Roles/JobRequirements.cs
index 83c9989d50..74d8afa03a 100644
--- a/Content.Shared/Roles/JobRequirements.cs
+++ b/Content.Shared/Roles/JobRequirements.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using Content.Shared.Players.PlayTimeTracking;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
@@ -7,17 +7,17 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy
namespace Content.Shared.Roles
{
///
- /// Abstract class for playtime and other requirements for role gates.
+ /// Abstract class for playtime and other requirements for role gates.
///
[ImplicitDataDefinitionForInheritors]
- public abstract class JobRequirement
- {
- [DataField("inverted")] public bool Inverted;
- }
+ public abstract class JobRequirement{}
[UsedImplicitly]
public sealed class DepartmentTimeRequirement : JobRequirement
{
+ ///
+ /// Which department needs the required amount of time.
+ ///
[DataField("department", customTypeSerializer: typeof(PrototypeIdSerializer))]
public string Department = default!;
@@ -25,6 +25,15 @@ namespace Content.Shared.Roles
/// How long (in seconds) this requirement is.
///
[DataField("time")] public TimeSpan Time;
+
+ ///
+ /// If true, requirement will return false if playtime above the specified time.
+ ///
+ ///
+ /// False by default.
+ /// True for invert general requirement
+ ///
+ [DataField("inverted")] public bool Inverted;
}
[UsedImplicitly]
@@ -36,19 +45,21 @@ namespace Content.Shared.Roles
[DataField("role", customTypeSerializer: typeof(PrototypeIdSerializer))]
public string Role = default!;
- ///
- /// How long (in seconds) this requirement is.
- ///
+ ///
[DataField("time")] public TimeSpan Time;
+
+ ///
+ [DataField("inverted")] public bool Inverted;
}
[UsedImplicitly]
public sealed class OverallPlaytimeRequirement : JobRequirement
{
- ///
- /// How long (in seconds) this requirement is.
- ///
+ ///
[DataField("time")] public TimeSpan Time;
+
+ ///
+ [DataField("inverted")] public bool Inverted;
}
public static class JobRequirements