From 2736c458c4d11be477e447678e882fd0049d7a1f Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 15 Mar 2026 20:15:36 +0100 Subject: [PATCH] Predict reagent grinder (#42815) * prediction!!! * fixes * fixes and add debug logs * fix prediction and cleanup * raise event on client + comp access * reapply power state changes * Update Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> * Update Content.Shared/Kitchen/Components/ReagentGrinderComponent.cs Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> * comments and prefilled grinder protos * t --------- Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: ScarKy0 --- .../EntitySystems/ChemistryGuideDataSystem.cs | 2 +- .../EntitySystems/ReagentGrinderSystem.cs | 27 +- Content.Client/Kitchen/UI/GrinderMenu.xaml | 2 +- Content.Client/Kitchen/UI/GrinderMenu.xaml.cs | 215 ++++++----- .../UI/ReagentGrinderBoundUserInterface.cs | 106 +++--- .../EntitySystems/ReagentGrinderSystem.cs | 321 +---------------- ...redSolutionContainerSystem.Capabilities.cs | 2 +- .../Chemistry/SharedTransferAmount.cs | 2 +- .../Components/ExtractableComponent.cs | 16 +- .../Components/ReagentGrinderComponent.cs | 98 ++++- .../SharedReagentGrinderSystem.cs | 341 +++++++++++++++++- .../Kitchen/SharedReagentGrinder.cs | 180 ++++----- .../SmartFridge/SmartFridgeComponent.cs | 4 +- .../Structures/Machines/reagent_grinder.yml | 21 +- 14 files changed, 697 insertions(+), 640 deletions(-) diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 4b449b96cb..7c2efbc471 100644 --- a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -116,7 +116,7 @@ public sealed class ChemistryGuideDataSystem : SharedChemistryGuideDataSystem } - if (extractableComponent.GrindableSolution is { } grindableSolutionId && + if (extractableComponent.GrindableSolutionName is { } grindableSolutionId && entProto.TryGetComponent(out var manager, EntityManager.ComponentFactory) && _solutionContainer.TryGetSolution(manager, grindableSolutionId, out var grindableSolution)) { diff --git a/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs index 0aaa8ba8d8..c8c2dc90bb 100644 --- a/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -1,7 +1,28 @@ +using Content.Shared.Kitchen; +using Content.Shared.Kitchen.Components; using Content.Shared.Kitchen.EntitySystems; -using JetBrains.Annotations; namespace Content.Client.Kitchen.EntitySystems; -[UsedImplicitly] -public sealed class ReagentGrinderSystem : SharedReagentGrinderSystem; +public sealed class ReagentGrinderSystem : SharedReagentGrinderSystem +{ + [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAfterAutoHandleState); + } + + private void OnAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + UpdateUi(ent); + } + + public override void UpdateUi(EntityUid uid) + { + if (_userInterface.TryGetOpenUi(uid, ReagentGrinderUiKey.Key, out var bui)) + bui.Update(); + } +} diff --git a/Content.Client/Kitchen/UI/GrinderMenu.xaml b/Content.Client/Kitchen/UI/GrinderMenu.xaml index dacddd0df6..65543f5d3c 100644 --- a/Content.Client/Kitchen/UI/GrinderMenu.xaml +++ b/Content.Client/Kitchen/UI/GrinderMenu.xaml @@ -5,7 +5,7 @@