Roundstart antag role restrictions revival (#20108)

Co-authored-by: Ray <vigersray@gmail.com>
Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2023-09-20 08:54:53 +01:00
committed by GitHub
parent 35246963c7
commit 4fbebb6917
14 changed files with 229 additions and 150 deletions

View File

@@ -97,21 +97,29 @@ public sealed class JobRequirementsManager
}
var player = _playerManager.LocalPlayer?.Session;
if (player == null)
return true;
var reasonBuilder = new StringBuilder();
return CheckRoleTime(job.Requirements, out reason);
}
foreach (var requirement in job.Requirements)
public bool CheckRoleTime(HashSet<JobRequirement>? requirements, [NotNullWhen(false)] out FormattedMessage? reason)
{
reason = null;
if (requirements == null)
return true;
var reasons = new List<string>();
foreach (var requirement in requirements)
{
if (JobRequirements.TryRequirementMet(requirement, _roles, out var jobReason, _entManager, _prototypes))
continue;
reasonBuilder.AppendLine(jobReason.ToMarkup());
reasons.Add(jobReason.ToMarkup());
}
reason = reasonBuilder.Length == 0 ? null : FormattedMessage.FromMarkup(reasonBuilder.ToString().Trim());
reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkup(string.Join('\n', reasons));
return reason == null;
}
}