CatStation/Content.Shared/Preferences/Loadouts/Effects/GroupLoadoutEffect.cs
Morb0 0f339baab5 Merge remote-tracking branch 'refs/remotes/wizards/master' into upstream-sync
# Conflicts:
#	Content.Server/Connection/ConnectionManager.cs
#	Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
#	Resources/Prototypes/Entities/Stations/base.yml
2024-09-01 22:20:47 +03:00

32 lines
1.2 KiB
C#

using System.Diagnostics.CodeAnalysis;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Shared.Preferences.Loadouts.Effects;
/// <summary>
/// Uses a <see cref="LoadoutEffectGroupPrototype"/> prototype as a singular effect that can be re-used.
/// </summary>
public sealed partial class GroupLoadoutEffect : LoadoutEffect
{
[DataField(required: true)]
public ProtoId<LoadoutEffectGroupPrototype> Proto;
public override bool Validate(HumanoidCharacterProfile profile, RoleLoadout loadout, LoadoutPrototype proto, ICommonSession? session, IDependencyCollection collection, [NotNullWhen(false)] out FormattedMessage? reason) // Corvax-Sponsors
{
var effectsProto = collection.Resolve<IPrototypeManager>().Index(Proto);
var reasons = new List<string>();
foreach (var effect in effectsProto.Effects)
{
if (effect.Validate(profile, loadout, proto, session, collection, out reason))
continue;
reasons.Add(reason.ToMarkup());
}
reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkupOrThrow(string.Join('\n', reasons));
return reason == null;
}
}