| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using Content.Shared.Item;
- using Content.Shared.Tag;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization;
- namespace Content.Shared.Whitelist;
- /// <summary>
- /// Used to determine whether an entity fits a certain whitelist.
- /// Does not whitelist by prototypes, since that is undesirable; you're better off just adding a tag to all
- /// entity prototypes that need to be whitelisted, and checking for that.
- /// </summary>
- /// <code>
- /// whitelist:
- /// tags:
- /// - Cigarette
- /// - FirelockElectronics
- /// components:
- /// - Buckle
- /// - AsteroidRock
- /// sizes:
- /// - Tiny
- /// - Large
- /// </code>
- [DataDefinition]
- [Serializable, NetSerializable]
- public sealed partial class EntityWhitelist
- {
- /// <summary>
- /// Component names that are allowed in the whitelist.
- /// </summary>
- [DataField] public string[]? Components;
- // TODO yaml validation
- /// <summary>
- /// Mind Role Prototype names that are allowed in the whitelist.
- /// </summary>
- [DataField] public string[]? MindRoles;
- // TODO yaml validation
- /// <summary>
- /// Item sizes that are allowed in the whitelist.
- /// </summary>
- [DataField]
- public List<ProtoId<ItemSizePrototype>>? Sizes;
- [NonSerialized, Access(typeof(EntityWhitelistSystem))]
- public List<ComponentRegistration>? Registrations;
- /// <summary>
- /// Tags that are allowed in the whitelist.
- /// </summary>
- [DataField]
- public List<ProtoId<TagPrototype>>? Tags;
- /// <summary>
- /// If false, an entity only requires one of these components or tags to pass the whitelist. If true, an
- /// entity requires to have ALL of these components and tags to pass.
- /// The "Sizes" criteria will ignores this, since an item can only have one size.
- /// </summary>
- [DataField]
- public bool RequireAll;
- }
|