Фикс открытия ролей спонсоркой
This commit is contained in:
parent
605e3f1fd2
commit
e081aa66fd
10 changed files with 59 additions and 34 deletions
|
|
@ -141,10 +141,12 @@ public sealed class JobRequirementsManager : ISharedPlaytimeManager
|
|||
if (requirements == null || !_cfg.GetCVar(CCVars.GameRoleTimers))
|
||||
return true;
|
||||
|
||||
var sponsorPrototypes = _sponsorsMgr?.GetClientPrototypes().ToArray() ?? []; // Sunrise-Sponsors
|
||||
|
||||
var reasons = new List<string>();
|
||||
foreach (var requirement in requirements)
|
||||
{
|
||||
if (requirement.Check(_entManager, _prototypes, _sponsorsMgr, protoId, profile, _roles, out var jobReason)) // Sunrise-Edit
|
||||
if (requirement.Check(_entManager, _prototypes, profile, _roles, protoId, sponsorPrototypes, out var jobReason)) // Sunrise-Sponsors
|
||||
continue;
|
||||
|
||||
reasons.Add(jobReason.ToMarkup());
|
||||
|
|
|
|||
|
|
@ -213,7 +213,13 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
|
|||
playTimes = new Dictionary<string, TimeSpan>();
|
||||
}
|
||||
|
||||
return JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(player.UserId).SelectedCharacter, _sponsorsManager);
|
||||
// Sunrise-Sponsors-Start
|
||||
var sponsorPrototypes = _sponsorsManager != null && _sponsorsManager.TryGetPrototypes(player.UserId, out var prototypes)
|
||||
? prototypes.ToArray()
|
||||
: [];
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
return JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(player.UserId).SelectedCharacter, sponsorPrototypes); // Sunrise-Sponsors
|
||||
}
|
||||
|
||||
public HashSet<ProtoId<JobPrototype>> GetDisallowedJobs(ICommonSession player)
|
||||
|
|
@ -228,9 +234,15 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
|
|||
playTimes = new Dictionary<string, TimeSpan>();
|
||||
}
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
var sponsorPrototypes = _sponsorsManager != null && _sponsorsManager.TryGetPrototypes(player.UserId, out var prototypes)
|
||||
? prototypes.ToArray()
|
||||
: [];
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
foreach (var job in _prototypes.EnumeratePrototypes<JobPrototype>())
|
||||
{
|
||||
if (JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(player.UserId).SelectedCharacter, _sponsorsManager)) // Sunrise-Edit
|
||||
if (JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(player.UserId).SelectedCharacter, sponsorPrototypes)) // Sunrise-Sponsors
|
||||
roles.Add(job.ID);
|
||||
}
|
||||
|
||||
|
|
@ -250,11 +262,17 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
|
|||
playTimes ??= new Dictionary<string, TimeSpan>();
|
||||
}
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
var sponsorPrototypes = _sponsorsManager != null && _sponsorsManager.TryGetPrototypes(player.UserId, out var prototypes)
|
||||
? prototypes.ToArray()
|
||||
: [];
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
for (var i = 0; i < jobs.Count; i++)
|
||||
{
|
||||
|
||||
if (_prototypes.TryIndex(jobs[i], out var job)
|
||||
&& JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(userId).SelectedCharacter, _sponsorsManager)) // Sunrise-Edit
|
||||
&& JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, (HumanoidCharacterProfile?) _preferencesManager.GetPreferences(userId).SelectedCharacter, sponsorPrototypes)) // Sunrise-Sponsors
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,14 +24,23 @@ public sealed partial class JobRequirementLoadoutEffect : LoadoutEffect
|
|||
return true;
|
||||
}
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
string[] sponsorPrototypes = [];
|
||||
if (collection.TryResolveType<ISharedSponsorsManager>(out var sponsorsManager))
|
||||
{
|
||||
sponsorPrototypes = sponsorsManager?.GetClientPrototypes().ToArray() ?? [];
|
||||
}
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
var manager = collection.Resolve<ISharedPlaytimeManager>();
|
||||
var playtimes = manager.GetPlayTimes(session);
|
||||
|
||||
return Requirement.Check(collection.Resolve<IEntityManager>(),
|
||||
collection.Resolve<IPrototypeManager>(),
|
||||
null,
|
||||
null,
|
||||
profile,
|
||||
playtimes,
|
||||
null, // Sunrise-Sponsors
|
||||
sponsorPrototypes, // Sunrise-Sponsors
|
||||
out reason);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
|
@ -20,10 +19,10 @@ public sealed partial class AgeRequirement : JobRequirement
|
|||
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Sponsors
|
||||
string[] sponsorPrototypes, // Sunrise-Sponsors
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
|
@ -26,16 +26,16 @@ public sealed partial class DepartmentTimeRequirement : JobRequirement
|
|||
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Sponsors
|
||||
string[] sponsorPrototypes, // Sunrise-Sponsors
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
if (sponsorsManager != null && protoId != null && sponsorsManager.GetClientPrototypes().Contains(protoId))
|
||||
if (sponsorPrototypes.Contains(protoId))
|
||||
return true;
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Shared.Players.PlayTimeTracking;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
|
@ -19,16 +19,16 @@ public sealed partial class OverallPlaytimeRequirement : JobRequirement
|
|||
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Sponsors
|
||||
string[] sponsorPrototypes, // Sunrise-Sponsors
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
if (sponsorsManager != null && protoId != null && sponsorsManager.GetClientPrototypes().Contains(protoId))
|
||||
if (sponsorPrototypes.Contains(protoId))
|
||||
return true;
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Shared.Players.PlayTimeTracking;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Shared.Roles.Jobs;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
|
@ -26,16 +26,16 @@ public sealed partial class RoleTimeRequirement : JobRequirement
|
|||
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Edit
|
||||
string[] sponsorPrototypes, // Sunrise-Edit
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
if (sponsorsManager != null && protoId != null && sponsorsManager.GetClientPrototypes().Contains(protoId))
|
||||
if (sponsorPrototypes.Contains(protoId))
|
||||
return true;
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis;
|
|||
using System.Text;
|
||||
using Content.Shared.Humanoid.Prototypes;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
|
@ -22,10 +21,10 @@ public sealed partial class SpeciesRequirement : JobRequirement
|
|||
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Sponsors
|
||||
string[] sponsorPrototypes, // Sunrise-Sponsors
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Utility;
|
||||
|
|
@ -16,7 +15,7 @@ public static class JobRequirements
|
|||
IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HumanoidCharacterProfile? profile,
|
||||
ISharedSponsorsManager? sponsorsManager) // Sunrise-Edit
|
||||
string[] sponsorPrototypes) // Sunrise-Sponsors
|
||||
{
|
||||
var sys = entManager.System<SharedRoleSystem>();
|
||||
var requirements = sys.GetJobRequirement(job);
|
||||
|
|
@ -26,7 +25,7 @@ public static class JobRequirements
|
|||
|
||||
foreach (var requirement in requirements)
|
||||
{
|
||||
if (!requirement.Check(entManager, protoManager, sponsorsManager, job.ID, profile, playTimes, out reason)) // Sunrise-Edit
|
||||
if (!requirement.Check(entManager, protoManager, profile, playTimes, job.ID, sponsorPrototypes, out reason)) // Sunrise-Sponsors
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -47,9 +46,9 @@ public abstract partial class JobRequirement
|
|||
public abstract bool Check(
|
||||
IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Sponsors
|
||||
string[] sponsorPrototypes, // Sunrise-Sponsors
|
||||
[NotNullWhen(false)] out FormattedMessage? reason);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Shared.Preferences;
|
||||
using Content.Shared.Roles;
|
||||
using Content.Sunrise.Interfaces.Shared;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.Localization;
|
||||
|
||||
namespace Content.Shared._Sunrise.Roles;
|
||||
|
||||
|
|
@ -16,10 +15,10 @@ public sealed partial class DiscordRoleRequirement : JobRequirement
|
|||
{
|
||||
public override bool Check(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
ISharedSponsorsManager? sponsorsManager, // Sunrise-Edit
|
||||
string? protoId, // Sunrise-Edit
|
||||
HumanoidCharacterProfile? profile,
|
||||
IReadOnlyDictionary<string, TimeSpan> playTimes,
|
||||
string? protoId, // Sunrise-Edit
|
||||
string[] sponsorPrototypes, // Sunrise-Edit
|
||||
[NotNullWhen(false)] out FormattedMessage? reason)
|
||||
{
|
||||
reason = new FormattedMessage();
|
||||
|
|
@ -28,7 +27,7 @@ public sealed partial class DiscordRoleRequirement : JobRequirement
|
|||
return true;
|
||||
|
||||
// Sunrise-Sponsors-Start
|
||||
if (sponsorsManager != null && protoId != null && sponsorsManager.GetClientPrototypes().Contains(protoId))
|
||||
if (sponsorPrototypes.Contains(protoId))
|
||||
return true;
|
||||
// Sunrise-Sponsors-End
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue