using JetBrains.Annotations; using Robust.Shared.Serialization; namespace Content.Shared.Store; /// /// Used to define a complicated condition that requires C# /// [ImplicitDataDefinitionForInheritors] [MeansImplicitUse] public abstract partial class ListingCondition { /// /// Determines whether or not a certain entity can purchase a listing. /// /// Whether or not the listing can be purchased public abstract bool Condition(ListingConditionArgs args); } /// Either the account owner, user, or an inanimate object (e.g., surplus bundle) /// The listing itself /// An entitymanager for sane coding public readonly record struct ListingConditionArgs(EntityUid Buyer, EntityUid? StoreEntity, ListingData Listing, IEntityManager EntityManager);