using Content.Shared.Tools; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Construction.Components; /// /// This is used for an object that can instantly create a machine upon having a tool applied to it. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedFlatpackSystem))] public sealed partial class FlatpackComponent : Component { /// /// The tool quality that, upon used to interact with this object, will create the /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public ProtoId QualityNeeded = "Pulsing"; /// /// The entity that is spawned when this object is unpacked. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public EntProtoId? Entity; /// /// Sound effect played upon the object being unpacked. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public SoundSpecifier UnpackSound = new SoundPathSpecifier("/Audio/Effects/unwrap.ogg"); /// /// A dictionary relating a machine board sprite state to a color used for the overlay. /// Kinda shitty but it gets the job done. /// [DataField] public Dictionary BoardColors = new(); } [Serializable, NetSerializable] public enum FlatpackVisuals : byte { Machine } public enum FlatpackVisualLayers : byte { Overlay }