using System; using Content.Shared.Chemistry.Solution.Components; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Solution { /// /// Define common interaction behaviors for /// /// [Flags] [Serializable, NetSerializable] public enum SolutionContainerCaps : ushort { None = 0, /// /// Reagents can be added with syringes. /// Injectable = 1 << 0, /// /// Reagents can be removed with syringes. /// Drawable = 1 << 1, /// /// Reagents can be easily added via all reagent containers. /// Think pouring something into another beaker or into the gas tank of a car. /// Refillable = 1 << 2, /// /// Reagents can be easily removed through any reagent container. /// Think pouring this or draining from a water tank. /// Drainable = 1 << 3, /// /// The contents of the solution can be examined directly. /// CanExamine = 1 << 4, /// /// Allows the container to be placed in a ReagentDispenserComponent. /// Otherwise it's considered to be too large or the improper shape to fit. /// Allows us to have obscenely large containers that are harder to abuse in chem dispensers /// since they can't be placed directly in them. /// FitsInDispenser = 1 << 5, OpenContainer = Refillable | Drainable | CanExamine } public static class SolutionContainerCapsHelpers { public static bool HasCap(this SolutionContainerCaps cap, SolutionContainerCaps other) { return (cap & other) == other; } } }