Refactor ReagentGrinder (#11751)
* Refactor ReagentGrinder - It can now process partial stacks. (Before it would do nothing if the entire stack's solution didn't fit in the output container) - Get rid of `SharedReagentGrinderComponent`, move shared stuff to `SharedReagentGrinder.cs`. - Subscribe to events instead of massive switch/case. - Get rid of update queue thing. - Change `DoWork` so it's less duplicate code for grinding/juicing. - Get rid of `ExtractableScalingEvent` and just scale directly based on item stack count. - Add message for when you try to put something into the reagent grinder that doesn't fit. - Fix obsolescence warnings. * Use a timer on component instead of SpawnTimer * s/StorageCap/StorageMaxEntities
This commit is contained in:
@@ -1,104 +0,0 @@
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Kitchen.Components
|
||||
{
|
||||
|
||||
public abstract class SharedReagentGrinderComponent : Component
|
||||
{
|
||||
public static string BeakerSlotId = "ReagentGrinder-reagentContainerContainer";
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderGrindStartMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public ReagentGrinderGrindStartMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderJuiceStartMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public ReagentGrinderJuiceStartMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderEjectChamberAllMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public ReagentGrinderEjectChamberAllMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderEjectChamberContentMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public EntityUid EntityID;
|
||||
public ReagentGrinderEjectChamberContentMessage(EntityUid entityID)
|
||||
{
|
||||
EntityID = entityID;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderWorkStartedMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public GrinderProgram GrinderProgram;
|
||||
public ReagentGrinderWorkStartedMessage(GrinderProgram grinderProgram)
|
||||
{
|
||||
GrinderProgram = grinderProgram;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ReagentGrinderWorkCompleteMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public ReagentGrinderWorkCompleteMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum ReagentGrinderVisualState : byte
|
||||
{
|
||||
BeakerAttached
|
||||
}
|
||||
|
||||
[NetSerializable, Serializable]
|
||||
public enum ReagentGrinderUiKey : byte
|
||||
{
|
||||
Key
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum GrinderProgram : byte
|
||||
{
|
||||
Grind,
|
||||
Juice
|
||||
}
|
||||
}
|
||||
|
||||
[NetSerializable, Serializable]
|
||||
public sealed class ReagentGrinderInterfaceState : BoundUserInterfaceState
|
||||
{
|
||||
public bool IsBusy;
|
||||
public bool HasBeakerIn;
|
||||
public bool Powered;
|
||||
public bool CanJuice;
|
||||
public bool CanGrind;
|
||||
public EntityUid[] ChamberContents;
|
||||
public Solution.ReagentQuantity[]? ReagentQuantities;
|
||||
public ReagentGrinderInterfaceState(bool isBusy, bool hasBeaker, bool powered, bool canJuice, bool canGrind, EntityUid[] chamberContents, Solution.ReagentQuantity[]? heldBeakerContents)
|
||||
{
|
||||
IsBusy = isBusy;
|
||||
HasBeakerIn = hasBeaker;
|
||||
Powered = powered;
|
||||
CanJuice = canJuice;
|
||||
CanGrind = canGrind;
|
||||
ChamberContents = chamberContents;
|
||||
ReagentQuantities = heldBeakerContents;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user