Add JobRequirementOverride prototypes (#28607)

* Add JobRequirementOverride prototypes

* a

* invert if

* Add override that takes in prototypes directly
This commit is contained in:
Leon Friedrich
2024-06-08 04:43:02 +12:00
committed by GitHub
parent b3debf449a
commit b632a65385
14 changed files with 145 additions and 48 deletions

View File

@@ -35,6 +35,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
[Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly PlayTimeTrackingManager _tracking = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly SharedRoleSystem _role = default!;
public override void Initialize()
{
@@ -197,7 +198,6 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
public bool IsAllowed(ICommonSession player, string role)
{
if (!_prototypes.TryIndex<JobPrototype>(role, out var job) ||
job.Requirements == null ||
!_cfg.GetCVar(CCVars.GameRoleTimers))
return true;
@@ -224,19 +224,8 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
foreach (var job in _prototypes.EnumeratePrototypes<JobPrototype>())
{
if (job.Requirements != null)
{
foreach (var requirement in job.Requirements)
{
if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes))
continue;
goto NoRole;
}
}
roles.Add(job.ID);
NoRole:;
if (JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes))
roles.Add(job.ID);
}
return roles;
@@ -257,22 +246,14 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
for (var i = 0; i < jobs.Count; i++)
{
var job = jobs[i];
if (!_prototypes.TryIndex(job, out var jobber) ||
jobber.Requirements == null ||
jobber.Requirements.Count == 0)
continue;
foreach (var requirement in jobber.Requirements)
if (_prototypes.TryIndex(jobs[i], out var job)
&& JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes))
{
if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes))
continue;
jobs.RemoveSwap(i);
i--;
break;
continue;
}
jobs.RemoveSwap(i);
i--;
}
}