using System; using System.Collections.Generic; using Robust.Shared.GameObjects; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; namespace Content.Shared.VendingMachines { [Virtual] [NetworkedComponent()] public class SharedVendingMachineComponent : Component { [ViewVariables] public List Inventory = new(); [Serializable, NetSerializable] public enum VendingMachineVisuals { VisualState, } [Serializable, NetSerializable] public enum VendingMachineVisualState { Normal, Off, Broken, Eject, Deny, } [Serializable, NetSerializable] public sealed class VendingMachineEjectMessage : BoundUserInterfaceMessage { public readonly string ID; public VendingMachineEjectMessage(string id) { ID = id; } } [Serializable, NetSerializable] public enum VendingMachineUiKey { Key, } [Serializable, NetSerializable] public sealed class InventorySyncRequestMessage : BoundUserInterfaceMessage { } [Serializable, NetSerializable] public sealed class VendingMachineInventoryMessage : BoundUserInterfaceMessage { public readonly List Inventory; public VendingMachineInventoryMessage(List inventory) { Inventory = inventory; } } [Serializable, NetSerializable] public sealed class VendingMachineInventoryEntry { [ViewVariables(VVAccess.ReadWrite)] public string ID; [ViewVariables(VVAccess.ReadWrite)] public uint Amount; public VendingMachineInventoryEntry(string id, uint amount) { ID = id; Amount = amount; } } [Serializable, NetSerializable] public enum VendingMachineWireStatus : byte { Power, Access, Advertisement, Limiter } } }