| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- using Content.Shared.Chemistry.Reagent;
- using Content.Shared.FixedPoint;
- using Robust.Shared.Serialization;
- namespace Content.Shared.Chemistry
- {
- /// <summary>
- /// This class holds constants that are shared between client and server.
- /// </summary>
- public sealed class SharedReagentDispenser
- {
- public const string OutputSlotName = "beakerSlot";
- }
- [Serializable, NetSerializable]
- public sealed class ReagentDispenserSetDispenseAmountMessage : BoundUserInterfaceMessage
- {
- public readonly ReagentDispenserDispenseAmount ReagentDispenserDispenseAmount;
- public ReagentDispenserSetDispenseAmountMessage(ReagentDispenserDispenseAmount amount)
- {
- ReagentDispenserDispenseAmount = amount;
- }
- /// <summary>
- /// Create a new instance from interpreting a String as an integer,
- /// throwing an exception if it is unable to parse.
- /// </summary>
- public ReagentDispenserSetDispenseAmountMessage(String s)
- {
- switch (s)
- {
- case "1":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U1;
- break;
- case "5":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U5;
- break;
- case "10":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U10;
- break;
- case "15":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U15;
- break;
- case "20":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U20;
- break;
- case "25":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U25;
- break;
- case "30":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U30;
- break;
- case "50":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U50;
- break;
- case "100":
- ReagentDispenserDispenseAmount = ReagentDispenserDispenseAmount.U100;
- break;
- default:
- throw new Exception($"Cannot convert the string `{s}` into a valid ReagentDispenser DispenseAmount");
- }
- }
- }
- [Serializable, NetSerializable]
- public sealed class ReagentDispenserDispenseReagentMessage : BoundUserInterfaceMessage
- {
- public readonly string SlotId;
- public ReagentDispenserDispenseReagentMessage(string slotId)
- {
- SlotId = slotId;
- }
- }
- [Serializable, NetSerializable]
- public sealed class ReagentDispenserClearContainerSolutionMessage : BoundUserInterfaceMessage
- {
- }
- public enum ReagentDispenserDispenseAmount
- {
- U1 = 1,
- U5 = 5,
- U10 = 10,
- U15 = 15,
- U20 = 20,
- U25 = 25,
- U30 = 30,
- U50 = 50,
- U100 = 100,
- }
- [Serializable, NetSerializable]
- public sealed class ReagentInventoryItem(string storageSlotId, string reagentLabel, FixedPoint2 quantity, Color reagentColor)
- {
- public string StorageSlotId = storageSlotId;
- public string ReagentLabel = reagentLabel;
- public FixedPoint2 Quantity = quantity;
- public Color ReagentColor = reagentColor;
- }
- [Serializable, NetSerializable]
- public sealed class ReagentDispenserBoundUserInterfaceState : BoundUserInterfaceState
- {
- public readonly ContainerInfo? OutputContainer;
- public readonly NetEntity? OutputContainerEntity;
- /// <summary>
- /// A list of the reagents which this dispenser can dispense.
- /// </summary>
- public readonly List<ReagentInventoryItem> Inventory;
- public readonly ReagentDispenserDispenseAmount SelectedDispenseAmount;
- public ReagentDispenserBoundUserInterfaceState(ContainerInfo? outputContainer, NetEntity? outputContainerEntity, List<ReagentInventoryItem> inventory, ReagentDispenserDispenseAmount selectedDispenseAmount)
- {
- OutputContainer = outputContainer;
- OutputContainerEntity = outputContainerEntity;
- Inventory = inventory;
- SelectedDispenseAmount = selectedDispenseAmount;
- }
- }
- [Serializable, NetSerializable]
- public enum ReagentDispenserUiKey
- {
- Key
- }
- }
|