From c7077a388c65bed28023d40994169fa24fd35c37 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 | 366 +----------------- ...redSolutionContainerSystem.Capabilities.cs | 2 +- .../Chemistry/SharedTransferAmount.cs | 2 +- .../Components/ExtractableComponent.cs | 16 +- .../Components/ReagentGrinderComponent.cs | 98 ++++- .../SharedReagentGrinderSystem.cs | 341 +++++++++++++++- .../Kitchen/SharedReagentGrinder.cs | 180 ++++----- .../_DV/SmartFridge/SmartFridgeComponent.cs | 6 + .../Structures/Machines/reagent_grinder.yml | 21 +- 14 files changed, 701 insertions(+), 683 deletions(-) diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 4b449b96cbb..7c2efbc4716 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 0aaa8ba8d8e..c8c2dc90bbe 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 dacddd0df68..65543f5d3c3 100644 --- a/Content.Client/Kitchen/UI/GrinderMenu.xaml +++ b/Content.Client/Kitchen/UI/GrinderMenu.xaml @@ -5,7 +5,7 @@