From b9478564314f912067c7b7952120bf3cb228c77f Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Fri, 7 Apr 2023 11:21:12 -0700 Subject: [PATCH] Remove hands component reference (#15197) --- Content.Client/DoAfter/DoAfterSystem.cs | 2 +- Content.Client/Hands/HandsComponent.cs | 23 ---------- Content.Client/Hands/Systems/HandsSystem.cs | 25 +++++------ .../Inventory/ClientInventorySystem.cs | 3 +- .../Inventory/StrippableBoundUserInterface.cs | 5 --- .../Systems/Hands/HandsUIController.cs | 6 ++- .../Inventory/InventoryUIController.cs | 2 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 6 +-- .../Tests/Buckle/BuckleTest.cs | 2 +- .../Components/ActionBlocking/HandCuffTest.cs | 2 +- .../Click/InteractionSystemTests.cs | 1 - Content.Server/AME/AMESystem.cs | 8 ++-- .../Commands/SetOutfitCommand.cs | 3 +- .../Systems/AdminVerbSystem.Tools.cs | 6 +-- .../Botany/Systems/PlantHolderSystem.cs | 18 ++++---- .../Buckle/Systems/BuckleSystem.Buckle.cs | 2 +- Content.Server/Chat/SuicideSystem.cs | 2 +- .../Completions/EmptyAllContainers.cs | 2 +- .../Completions/EmptyContainer.cs | 2 +- .../ConstructionSystem.Initial.cs | 4 +- .../Disease/DiseaseDiagnosisSystem.cs | 22 +++++----- .../Disposal/Tube/DisposalTubeSystem.cs | 2 +- .../Unit/EntitySystems/DisposalUnitSystem.cs | 5 +-- .../Emoting/Systems/BodyEmotesSystem.cs | 2 +- .../Rules/TraitorDeathMatchRuleSystem.cs | 4 +- .../Hands/Components/HandsComponent.cs | 9 ---- Content.Server/Hands/Systems/HandsSystem.cs | 7 ++- .../Nutrition/EntitySystems/FoodSystem.cs | 2 +- .../EntitySystems/SliceableFoodSystem.cs | 1 - .../EntitySystems/PowerReceiverSystem.cs | 10 ++--- Content.Server/Sandbox/SandboxSystem.cs | 3 +- .../Standing/StandingStateSystem.cs | 2 +- .../Station/Systems/StationSpawningSystem.cs | 5 +-- .../EntitySystems/SecretStashSystem.cs | 4 +- .../Storage/EntitySystems/StorageSystem.cs | 44 +++++++++---------- Content.Server/Strip/StrippableSystem.cs | 26 +++++------ .../Tools/Innate/InnateToolSystem.cs | 7 ++- .../UserInterface/ActivatableUISystem.cs | 4 +- Content.Server/Verbs/VerbSystem.cs | 5 +-- .../Weapons/Melee/MeleeWeaponSystem.cs | 5 +-- Content.Server/Wieldable/WieldableSystem.cs | 8 ++-- Content.Server/Wires/WiresSystem.cs | 4 +- .../Zombies/ZombifyOnDeathSystem.cs | 44 +++++++++---------- .../Access/Systems/SharedIdCardSystem.cs | 3 +- Content.Shared/Blocking/BlockingSystem.cs | 5 +-- .../Containers/ItemSlot/ItemSlotsSystem.cs | 13 +++--- Content.Shared/Cuffs/SharedCuffableSystem.cs | 8 ++-- .../DoAfter/SharedDoAfterSystem.Update.cs | 6 +-- Content.Shared/DoAfter/SharedDoAfterSystem.cs | 4 +- .../Doors/Systems/SharedDoorSystem.cs | 13 +++--- .../Hands/Components/HandHelpers.cs | 8 ++-- ...redHandsComponent.cs => HandsComponent.cs} | 21 +++++++-- .../EntitySystems/SharedHandsSystem.AI.cs | 8 ++-- .../EntitySystems/SharedHandsSystem.Drop.cs | 10 ++--- .../SharedHandsSystem.Interactions.cs | 16 +++---- .../EntitySystems/SharedHandsSystem.Pickup.cs | 14 +++--- .../Hands/EntitySystems/SharedHandsSystem.cs | 29 ++++++++---- .../Interaction/SharedInteractionSystem.cs | 5 +-- .../Inventory/InventorySystem.Equip.cs | 7 ++- .../Item/SharedMultiHandedItemSystem.cs | 3 +- Content.Shared/Lock/LockSystem.cs | 4 +- .../Mech/EntitySystems/SharedMechSystem.cs | 2 +- Content.Shared/Stacks/SharedStackSystem.cs | 2 +- .../Standing/StandingStateSystem.cs | 12 ++--- .../SharedEntityStorageSystem.cs | 4 +- .../Strip/SharedStrippableSystem.cs | 4 +- .../Tabletop/SharedTabletopSystem.cs | 5 +-- Content.Shared/Throwing/ThrownItemSystem.cs | 6 +-- Content.Shared/Verbs/SharedVerbSystem.cs | 2 +- Content.Shared/Verbs/VerbEvents.cs | 4 +- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 2 +- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 6 +-- .../Weapons/Reflect/SharedReflectSystem.cs | 20 ++++----- 73 files changed, 272 insertions(+), 323 deletions(-) delete mode 100644 Content.Client/Hands/HandsComponent.cs delete mode 100644 Content.Server/Hands/Components/HandsComponent.cs rename Content.Shared/Hands/Components/{SharedHandsComponent.cs => HandsComponent.cs} (78%) diff --git a/Content.Client/DoAfter/DoAfterSystem.cs b/Content.Client/DoAfter/DoAfterSystem.cs index ecabaa20e8..761747b8e9 100644 --- a/Content.Client/DoAfter/DoAfterSystem.cs +++ b/Content.Client/DoAfter/DoAfterSystem.cs @@ -48,7 +48,7 @@ public sealed class DoAfterSystem : SharedDoAfterSystem var time = GameTiming.CurTime; var comp = Comp(playerEntity.Value); var xformQuery = GetEntityQuery(); - var handsQuery = GetEntityQuery(); + var handsQuery = GetEntityQuery(); Update(playerEntity.Value, active, comp, time, xformQuery, handsQuery); } } diff --git a/Content.Client/Hands/HandsComponent.cs b/Content.Client/Hands/HandsComponent.cs deleted file mode 100644 index aa38598bfc..0000000000 --- a/Content.Client/Hands/HandsComponent.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Content.Client.Hands.Systems; -using Content.Client.Hands.UI; -using Content.Shared.Hands.Components; - -namespace Content.Client.Hands -{ - [RegisterComponent] - [ComponentReference(typeof(SharedHandsComponent))] - [Access(typeof(HandsSystem))] - public sealed class HandsComponent : SharedHandsComponent - { - /// - /// Whether or not to add in-hand sprites for held items. Some entities (e.g., drones) don't want these. - /// - [DataField("showInHands")] - public bool ShowInHands = true; - - /// - /// Data about the current sprite layers that the hand is contributing to the owner entity. Used for sprite in-hands. - /// - public readonly Dictionary> RevealedLayers = new(); - } -} diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index 08bf64843b..f42de01c81 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -1,7 +1,8 @@ +using System.Diagnostics.CodeAnalysis; using Content.Client.Animations; using Content.Client.Examine; using Content.Client.Strip; -using Content.Client.Verbs; +using Content.Client.Verbs.UI; using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -9,13 +10,11 @@ using Content.Shared.Item; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Player; +using Robust.Client.UserInterface; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Timing; -using System.Diagnostics.CodeAnalysis; -using Content.Client.Verbs.UI; -using Robust.Client.UserInterface; namespace Content.Client.Hands.Systems { @@ -44,8 +43,8 @@ namespace Content.Client.Hands.Systems { base.Initialize(); - SubscribeLocalEvent(HandleItemRemoved); - SubscribeLocalEvent(HandleItemAdded); + SubscribeLocalEvent(HandleItemRemoved); + SubscribeLocalEvent(HandleItemAdded); SubscribeLocalEvent(HandlePlayerAttached); SubscribeLocalEvent(HandlePlayerDetached); @@ -142,7 +141,7 @@ namespace Content.Client.Hands.Systems OnPlayerHandsAdded?.Invoke(hands); } - public override void DoDrop(EntityUid uid, Hand hand, bool doDropInteraction = true, SharedHandsComponent? hands = null) + public override void DoDrop(EntityUid uid, Hand hand, bool doDropInteraction = true, HandsComponent? hands = null) { base.DoDrop(uid, hand, doDropInteraction, hands); @@ -252,7 +251,7 @@ namespace Content.Client.Hands.Systems #region visuals - private void HandleItemAdded(EntityUid uid, SharedHandsComponent handComp, ContainerModifiedMessage args) + private void HandleItemAdded(EntityUid uid, HandsComponent handComp, ContainerModifiedMessage args) { if (!handComp.Hands.TryGetValue(args.Container.ID, out var hand)) return; @@ -268,7 +267,7 @@ namespace Content.Client.Hands.Systems OnPlayerHandBlocked?.Invoke(hand.Name); } - private void HandleItemRemoved(EntityUid uid, SharedHandsComponent handComp, ContainerModifiedMessage args) + private void HandleItemRemoved(EntityUid uid, HandsComponent handComp, ContainerModifiedMessage args) { if (!handComp.Hands.TryGetValue(args.Container.ID, out var hand)) return; @@ -393,12 +392,12 @@ namespace Content.Client.Hands.Systems } #endregion - private void AddHand(EntityUid uid, Hand newHand, SharedHandsComponent? handsComp = null) + private void AddHand(EntityUid uid, Hand newHand, HandsComponent? handsComp = null) { AddHand(uid, newHand.Name, newHand.Location, handsComp); } - public override void AddHand(EntityUid uid, string handName, HandLocation handLocation, SharedHandsComponent? handsComp = null) + public override void AddHand(EntityUid uid, string handName, HandLocation handLocation, HandsComponent? handsComp = null) { base.AddHand(uid, handName, handLocation, handsComp); @@ -411,7 +410,7 @@ namespace Content.Client.Hands.Systems if (handsComp.ActiveHand == null) SetActiveHand(uid, handsComp.Hands[handName], handsComp); } - public override void RemoveHand(EntityUid uid, string handName, SharedHandsComponent? handsComp = null) + public override void RemoveHand(EntityUid uid, string handName, HandsComponent? handsComp = null) { if (uid == _playerManager.LocalPlayer?.ControlledEntity && handsComp != null && handsComp.Hands.ContainsKey(handName) && uid == @@ -423,7 +422,7 @@ namespace Content.Client.Hands.Systems base.RemoveHand(uid, handName, handsComp); } - private void OnHandActivated(SharedHandsComponent? handsComponent) + private void OnHandActivated(HandsComponent? handsComponent) { if (handsComponent == null) return; diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index 799f6cf835..37d3c6f42d 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -2,7 +2,6 @@ using Content.Client.Clothing; using Content.Client.Examine; using Content.Client.Storage; using Content.Client.UserInterface.Controls; -using Content.Client.Verbs; using Content.Client.Verbs.UI; using Content.Shared.Clothing.Components; using Content.Shared.Hands.Components; @@ -234,7 +233,7 @@ namespace Content.Client.Inventory // TODO hud refactor This should also live in a UI Controller private void HoverInSlotButton(EntityUid uid, string slot, SlotControl control, - InventoryComponent? inventoryComponent = null, SharedHandsComponent? hands = null) + InventoryComponent? inventoryComponent = null, HandsComponent? hands = null) { if (!Resolve(uid, ref inventoryComponent)) return; diff --git a/Content.Client/Inventory/StrippableBoundUserInterface.cs b/Content.Client/Inventory/StrippableBoundUserInterface.cs index ae6899ee0a..efca4b0a97 100644 --- a/Content.Client/Inventory/StrippableBoundUserInterface.cs +++ b/Content.Client/Inventory/StrippableBoundUserInterface.cs @@ -1,12 +1,9 @@ using System.Linq; -using Content.Client.Cuffs; using Content.Client.Examine; -using Content.Client.Hands; using Content.Client.Strip; using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.Hands.Controls; -using Content.Client.Verbs; using Content.Client.Verbs.UI; using Content.Shared.Cuffs; using Content.Shared.Cuffs.Components; @@ -16,7 +13,6 @@ using Content.Shared.IdentityManagement; using Content.Shared.Input; using Content.Shared.Inventory; using Content.Shared.Strip.Components; -using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.UserInterface; @@ -24,7 +20,6 @@ using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; using Robust.Shared.Map; using Robust.Shared.Prototypes; -using Robust.Shared.Utility; using static Content.Client.Inventory.ClientInventorySystem; using static Robust.Client.UserInterface.Control; diff --git a/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs b/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs index 55a3aa9f5b..1601f04189 100644 --- a/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs +++ b/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs @@ -1,5 +1,4 @@ using Content.Client.Gameplay; -using Content.Client.Hands; using Content.Client.Hands.Systems; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.Hands.Controls; @@ -8,6 +7,7 @@ using Content.Shared.Cooldown; using Content.Shared.Hands.Components; using Content.Shared.Input; using Robust.Client.GameObjects; +using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Robust.Shared.Input; @@ -19,6 +19,7 @@ namespace Content.Client.UserInterface.Systems.Hands; public sealed class HandsUIController : UIController, IOnStateEntered, IOnSystemChanged { [Dependency] private readonly IEntityManager _entities = default!; + [Dependency] private readonly IPlayerManager _player = default!; [UISystemDependency] private readonly HandsSystem _handsSystem = default!; @@ -246,7 +247,8 @@ public sealed class HandsUIController : UIController, IOnStateEntered(user)) + if (!HasComp(user)) { _popups.PopupEntity(Loc.GetString("buckle-component-no-hands-message"), user, user); return false; diff --git a/Content.Server/Chat/SuicideSystem.cs b/Content.Server/Chat/SuicideSystem.cs index 5d2df81584..e5f3d3b5c3 100644 --- a/Content.Server/Chat/SuicideSystem.cs +++ b/Content.Server/Chat/SuicideSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Administration.Logs; -using Content.Server.Hands.Components; using Content.Server.Popups; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Content.Shared.Database; +using Content.Shared.Hands.Components; using Content.Shared.Interaction.Events; using Content.Shared.Item; using Content.Shared.Mobs.Components; diff --git a/Content.Server/Construction/Completions/EmptyAllContainers.cs b/Content.Server/Construction/Completions/EmptyAllContainers.cs index 8d3b4f90ec..ab71c8bedd 100644 --- a/Content.Server/Construction/Completions/EmptyAllContainers.cs +++ b/Content.Server/Construction/Completions/EmptyAllContainers.cs @@ -1,6 +1,6 @@ -using Content.Server.Hands.Components; using Content.Server.Hands.Systems; using Content.Shared.Construction; +using Content.Shared.Hands.Components; using JetBrains.Annotations; using Robust.Server.Containers; using Robust.Shared.Containers; diff --git a/Content.Server/Construction/Completions/EmptyContainer.cs b/Content.Server/Construction/Completions/EmptyContainer.cs index 2a319a7fa8..063ed883c8 100644 --- a/Content.Server/Construction/Completions/EmptyContainer.cs +++ b/Content.Server/Construction/Completions/EmptyContainer.cs @@ -1,6 +1,6 @@ -using Content.Server.Hands.Components; using Content.Server.Hands.Systems; using Content.Shared.Construction; +using Content.Shared.Hands.Components; using JetBrains.Annotations; using Robust.Server.Containers; using Robust.Shared.Containers; diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index c9e2f147fa..c5481edfcf 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -2,8 +2,6 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Content.Server.Construction.Components; -using Content.Server.DoAfter; -using Content.Server.Hands.Components; using Content.Server.Storage.Components; using Content.Shared.ActionBlocker; using Content.Shared.Construction; @@ -12,11 +10,11 @@ using Content.Shared.Construction.Steps; using Content.Shared.Coordinates; using Content.Shared.Database; using Content.Shared.DoAfter; +using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Inventory; using Robust.Shared.Containers; -using Robust.Shared.Player; using Robust.Shared.Players; using Robust.Shared.Timing; diff --git a/Content.Server/Disease/DiseaseDiagnosisSystem.cs b/Content.Server/Disease/DiseaseDiagnosisSystem.cs index 37136435a4..b671b097b3 100644 --- a/Content.Server/Disease/DiseaseDiagnosisSystem.cs +++ b/Content.Server/Disease/DiseaseDiagnosisSystem.cs @@ -1,23 +1,23 @@ using Content.Server.Disease.Components; -using Content.Shared.Disease; -using Content.Shared.Interaction; -using Content.Shared.Inventory; -using Content.Shared.Examine; -using Content.Server.Popups; -using Content.Server.Hands.Components; using Content.Server.Nutrition.EntitySystems; using Content.Server.Paper; +using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; -using Robust.Shared.Random; -using Robust.Shared.Player; -using Robust.Shared.Audio; -using Robust.Shared.Utility; -using Content.Shared.Tools.Components; using Content.Server.Station.Systems; +using Content.Shared.Disease; using Content.Shared.DoAfter; +using Content.Shared.Examine; +using Content.Shared.Hands.Components; using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; +using Content.Shared.Inventory; using Content.Shared.Swab; +using Content.Shared.Tools.Components; +using Robust.Shared.Audio; +using Robust.Shared.Player; +using Robust.Shared.Random; +using Robust.Shared.Utility; namespace Content.Server.Disease { diff --git a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs index 52200e49e3..aea901ee1f 100644 --- a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs +++ b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs @@ -2,11 +2,11 @@ using System.Linq; using System.Text; using Content.Server.Construction.Completions; using Content.Server.Disposal.Tube.Components; -using Content.Server.Hands.Components; using Content.Server.Popups; using Content.Server.UserInterface; using Content.Shared.Destructible; using Content.Shared.Disposal.Components; +using Content.Shared.Hands.Components; using Content.Shared.Movement.Events; using Content.Shared.Popups; using Robust.Shared.Audio; diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index e64f40a488..99c57378c1 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; using Content.Server.Disposal.Tube.Components; using Content.Server.Disposal.Unit.Components; -using Content.Server.Hands.Components; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -27,9 +26,9 @@ using Content.Shared.Throwing; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Containers; +using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Random; -using Robust.Shared.Map.Components; using Robust.Shared.Utility; namespace Content.Server.Disposal.Unit.EntitySystems @@ -469,7 +468,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems if (!Resolve(unitId, ref unit)) return false; - if (userId.HasValue && !HasComp(userId) && toInsertId != userId) // Mobs like mouse can Jump inside even with no hands + if (userId.HasValue && !HasComp(userId) && toInsertId != userId) // Mobs like mouse can Jump inside even with no hands { _popupSystem.PopupEntity(Loc.GetString("disposal-unit-no-hands"), userId.Value, userId.Value, PopupType.SmallCaution); return false; diff --git a/Content.Server/Emoting/Systems/BodyEmotesSystem.cs b/Content.Server/Emoting/Systems/BodyEmotesSystem.cs index f2c44b94fa..594eb0ec6d 100644 --- a/Content.Server/Emoting/Systems/BodyEmotesSystem.cs +++ b/Content.Server/Emoting/Systems/BodyEmotesSystem.cs @@ -1,7 +1,7 @@ using Content.Server.Chat.Systems; using Content.Server.Emoting.Components; -using Content.Server.Hands.Components; using Content.Shared.Chat.Prototypes; +using Content.Shared.Hands.Components; using Robust.Shared.Prototypes; namespace Content.Server.Emoting.Systems; diff --git a/Content.Server/GameTicking/Rules/TraitorDeathMatchRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorDeathMatchRuleSystem.cs index f1bb0c1ee7..a634bb34c6 100644 --- a/Content.Server/GameTicking/Rules/TraitorDeathMatchRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/TraitorDeathMatchRuleSystem.cs @@ -1,8 +1,6 @@ using System.Linq; using Content.Server.Atmos.EntitySystems; using Content.Server.Chat.Managers; -using Content.Server.GameTicking.Rules.Configurations; -using Content.Server.Hands.Components; using Content.Server.PDA; using Content.Server.Players; using Content.Server.Spawners.Components; @@ -13,7 +11,7 @@ using Content.Server.TraitorDeathMatch.Components; using Content.Shared.CCVar; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; -using Content.Shared.FixedPoint; +using Content.Shared.Hands.Components; using Content.Shared.Inventory; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; diff --git a/Content.Server/Hands/Components/HandsComponent.cs b/Content.Server/Hands/Components/HandsComponent.cs deleted file mode 100644 index 4e06a6b67f..0000000000 --- a/Content.Server/Hands/Components/HandsComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Content.Shared.Hands.Components; - -namespace Content.Server.Hands.Components; - -[RegisterComponent] -[ComponentReference(typeof(SharedHandsComponent))] -public sealed class HandsComponent : SharedHandsComponent -{ -} diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index 3848b00dfd..92b91ab75f 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Hands.Components; using Content.Server.Popups; using Content.Server.Pulling; using Content.Server.Stack; @@ -110,7 +109,7 @@ namespace Content.Server.Hands.Systems RaiseNetworkEvent(new PickupAnimationEvent(item, initialPosition, finalPosition), filter); } - private void HandleEntityRemoved(EntityUid uid, SharedHandsComponent component, EntRemovedFromContainerMessage args) + private void HandleEntityRemoved(EntityUid uid, HandsComponent component, EntRemovedFromContainerMessage args) { if (!Deleted(args.Entity) && TryComp(args.Entity, out HandVirtualItemComponent? @virtual)) _virtualSystem.Delete(@virtual, uid); @@ -186,7 +185,7 @@ namespace Content.Server.Hands.Systems if (playerSession.AttachedEntity is not {Valid: true} player || !Exists(player) || player.IsInContainer() || - !TryComp(player, out SharedHandsComponent? hands) || + !TryComp(player, out HandsComponent? hands) || hands.ActiveHandEntity is not EntityUid throwEnt || !_actionBlockerSystem.CanThrow(player, throwEnt)) return false; @@ -248,7 +247,7 @@ namespace Content.Server.Hands.Systems if (!_actionBlockerSystem.CanInteract(plyEnt, null)) return; - if (!TryComp(plyEnt, out var hands) || hands.ActiveHand == null) + if (!TryComp(plyEnt, out var hands) || hands.ActiveHand == null) return; if (!_inventorySystem.TryGetSlotEntity(plyEnt, equipmentSlot, out var slotEntity) || diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index d0e89ea9f0..5383384b4a 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.EntitySystems; -using Content.Server.Hands.Components; using Content.Server.Nutrition.Components; using Content.Server.Popups; using Content.Shared.Administration.Logs; @@ -11,6 +10,7 @@ using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.FixedPoint; +using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index ef2e84ca6a..2e7b037d33 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; -using Content.Server.Hands.Components; using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Examine; diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index aa223fb674..9accaed63e 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -1,14 +1,14 @@ -using Content.Server.Power.Components; -using Content.Server.Hands.Components; using Content.Server.Administration.Logs; +using Content.Server.Administration.Managers; +using Content.Server.Power.Components; +using Content.Shared.Administration; +using Content.Shared.Database; using Content.Shared.Examine; +using Content.Shared.Hands.Components; using Content.Shared.Power; using Content.Shared.Verbs; -using Content.Shared.Database; using Robust.Server.GameObjects; using Robust.Shared.Audio; -using Content.Server.Administration.Managers; -using Content.Shared.Administration; using Robust.Shared.Utility; namespace Content.Server.Power.EntitySystems diff --git a/Content.Server/Sandbox/SandboxSystem.cs b/Content.Server/Sandbox/SandboxSystem.cs index 7f7f3eac0f..23da6f4ef7 100644 --- a/Content.Server/Sandbox/SandboxSystem.cs +++ b/Content.Server/Sandbox/SandboxSystem.cs @@ -1,16 +1,15 @@ using System.Linq; using Content.Server.GameTicking; -using Content.Server.Hands.Components; using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; +using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Inventory; using Content.Shared.PDA; using Content.Shared.Sandbox; using Robust.Server.Console; -using Robust.Server.GameObjects; using Robust.Server.Placement; using Robust.Server.Player; using Robust.Shared.Enums; diff --git a/Content.Server/Standing/StandingStateSystem.cs b/Content.Server/Standing/StandingStateSystem.cs index d4a68cb26e..775df13d36 100644 --- a/Content.Server/Standing/StandingStateSystem.cs +++ b/Content.Server/Standing/StandingStateSystem.cs @@ -21,7 +21,7 @@ public sealed class StandingStateSystem : EntitySystem var fellEvent = new FellDownEvent(uid); RaiseLocalEvent(uid, fellEvent, false); - if (!TryComp(uid, out SharedHandsComponent? handsComp)) + if (!TryComp(uid, out HandsComponent? handsComp)) return; var worldRotation = EntityManager.GetComponent(uid).WorldRotation.ToVec(); diff --git a/Content.Server/Station/Systems/StationSpawningSystem.cs b/Content.Server/Station/Systems/StationSpawningSystem.cs index 641c801d50..d8fece6575 100644 --- a/Content.Server/Station/Systems/StationSpawningSystem.cs +++ b/Content.Server/Station/Systems/StationSpawningSystem.cs @@ -1,15 +1,15 @@ using Content.Server.Access.Systems; using Content.Server.DetailExaminable; -using Content.Server.Hands.Components; using Content.Server.Hands.Systems; using Content.Server.Humanoid; using Content.Server.IdentityManagement; +using Content.Server.Mind.Commands; using Content.Server.PDA; using Content.Server.Roles; using Content.Server.Station.Components; -using Content.Server.Mind.Commands; using Content.Shared.Access.Systems; using Content.Shared.CCVar; +using Content.Shared.Hands.Components; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Inventory; @@ -25,7 +25,6 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; - namespace Content.Server.Station.Systems; /// diff --git a/Content.Server/Storage/EntitySystems/SecretStashSystem.cs b/Content.Server/Storage/EntitySystems/SecretStashSystem.cs index 2237527c35..dee1d0ffb3 100644 --- a/Content.Server/Storage/EntitySystems/SecretStashSystem.cs +++ b/Content.Server/Storage/EntitySystems/SecretStashSystem.cs @@ -47,7 +47,7 @@ namespace Content.Server.Storage.EntitySystems /// True if item was hidden inside stash public bool TryHideItem(EntityUid uid, EntityUid userUid, EntityUid itemToHideUid, SecretStashComponent? component = null, ItemComponent? item = null, - MetaDataComponent? itemMeta = null, SharedHandsComponent? hands = null) + MetaDataComponent? itemMeta = null, HandsComponent? hands = null) { if (!Resolve(uid, ref component)) return false; @@ -94,7 +94,7 @@ namespace Content.Server.Storage.EntitySystems /// /// True if user received item public bool TryGetItem(EntityUid uid, EntityUid userUid, SecretStashComponent? component = null, - SharedHandsComponent? hands = null) + HandsComponent? hands = null) { if (!Resolve(uid, ref component)) return false; diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index b09e436dc1..5373c46e49 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -1,39 +1,39 @@ using System.Linq; -using Content.Server.Hands.Components; +using Content.Server.Administration.Managers; +using Content.Server.Ghost.Components; +using Content.Server.Interaction; +using Content.Server.Popups; using Content.Server.Storage.Components; +using Content.Shared.ActionBlocker; +using Content.Shared.Administration; +using Content.Shared.CombatMode; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Destructible; +using Content.Shared.DoAfter; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Implants.Components; using Content.Shared.Interaction; +using Content.Shared.Item; +using Content.Shared.Lock; +using Content.Shared.Placeable; +using Content.Shared.Stacks; using Content.Shared.Storage; +using Content.Shared.Storage.Components; using Content.Shared.Timing; using Content.Shared.Verbs; using JetBrains.Annotations; +using Robust.Server.Containers; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Audio; using Robust.Shared.Containers; +using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; -using Content.Server.Interaction; -using Content.Shared.Hands.EntitySystems; -using Content.Shared.Item; -using Content.Shared.Placeable; -using Content.Shared.Stacks; -using Content.Shared.Storage.Components; -using Robust.Shared.Audio; -using Robust.Shared.Map; -using Robust.Shared.Player; -using Robust.Server.Containers; -using Content.Server.Popups; -using Content.Shared.Destructible; using static Content.Shared.Storage.SharedStorageComponent; -using Content.Shared.ActionBlocker; -using Content.Shared.CombatMode; -using Content.Shared.Containers.ItemSlots; -using Content.Shared.DoAfter; -using Content.Shared.Implants.Components; -using Content.Shared.Lock; -using Content.Server.Ghost.Components; -using Content.Server.Administration.Managers; -using Content.Shared.Administration; namespace Content.Server.Storage.EntitySystems { diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index b0c9322ba7..86271b0b0c 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -1,24 +1,23 @@ using System.Linq; +using Content.Server.Administration.Logs; using Content.Server.Ensnaring; -using Content.Server.Hands.Components; using Content.Shared.CombatMode; +using Content.Shared.Cuffs; +using Content.Shared.Cuffs.Components; +using Content.Shared.Database; +using Content.Shared.DoAfter; +using Content.Shared.Ensnaring.Components; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; using Content.Shared.Popups; +using Content.Shared.Strip; using Content.Shared.Strip.Components; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Content.Server.Administration.Logs; -using Content.Shared.Cuffs; -using Content.Shared.Cuffs.Components; -using Content.Shared.Database; -using Content.Shared.DoAfter; -using Content.Shared.Ensnaring.Components; -using Content.Shared.Interaction; -using Content.Shared.Strip; using Robust.Shared.Utility; namespace Content.Server.Strip @@ -89,8 +88,7 @@ namespace Content.Server.Strip private void StripHand(EntityUid target, EntityUid user, string handId, StrippableComponent component, HandsComponent userHands) { - if (!TryComp(target, out var targetHands) - || !targetHands.Hands.TryGetValue(handId, out var hand)) + if (!_handsSystem.TryGetHand(target, handId, out var hand)) return; // is the target a handcuff? @@ -274,7 +272,7 @@ namespace Content.Server.Strip return false; } - if (!hands.Hands.TryGetValue(handName, out var hand) + if (!_handsSystem.TryGetHand(target, handName, out var hand, hands) || !_handsSystem.CanPickupToHand(target, userHands.ActiveHandEntity.Value, hand, checkActionBlocker: false, hands)) { _popup.PopupCursor(Loc.GetString("strippable-component-cannot-put-message",("owner", target)), user); @@ -397,7 +395,7 @@ namespace Content.Server.Strip bool Check() { - if (!hands.Hands.TryGetValue(handName, out var hand) || hand.HeldEntity != item) + if (!_handsSystem.TryGetHand(target, handName, out var hand, hands) || hand.HeldEntity != item) { _popup.PopupCursor(Loc.GetString("strippable-component-item-slot-free-message",("owner", target)), user); return false; @@ -432,7 +430,7 @@ namespace Content.Server.Strip DuplicateCondition = DuplicateConditions.SameTool }; - if (Check() && hands.Hands.TryGetValue(handName, out var handSlot) && handSlot.HeldEntity != null) + if (Check() && _handsSystem.TryGetHand(target, handName, out var handSlot, hands) && handSlot.HeldEntity != null) { _popup.PopupEntity( Loc.GetString("strippable-component-alert-owner", diff --git a/Content.Server/Tools/Innate/InnateToolSystem.cs b/Content.Server/Tools/Innate/InnateToolSystem.cs index 2129239349..d0109138ad 100644 --- a/Content.Server/Tools/Innate/InnateToolSystem.cs +++ b/Content.Server/Tools/Innate/InnateToolSystem.cs @@ -1,10 +1,9 @@ - -using Content.Shared.Interaction.Components; -using Content.Server.Hands.Components; +using Content.Shared.Destructible; +using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Interaction.Components; using Content.Shared.Storage; using Content.Shared.Tag; -using Content.Shared.Destructible; using Robust.Shared.Random; namespace Content.Server.Tools.Innate diff --git a/Content.Server/UserInterface/ActivatableUISystem.cs b/Content.Server/UserInterface/ActivatableUISystem.cs index 2bd60ac3ec..e9bdce6c2c 100644 --- a/Content.Server/UserInterface/ActivatableUISystem.cs +++ b/Content.Server/UserInterface/ActivatableUISystem.cs @@ -45,7 +45,7 @@ namespace Content.Server.UserInterface if (!comp.RequireHands) return; - if (!TryComp(ev.Sender.AttachedEntity, out SharedHandsComponent? hands) || hands.Hands.Count == 0) + if (!TryComp(ev.Sender.AttachedEntity, out HandsComponent? hands) || hands.Hands.Count == 0) ev.Cancel(); } @@ -111,7 +111,7 @@ namespace Content.Server.UserInterface if (!_blockerSystem.CanInteract(user, aui.Owner) && (!aui.AllowSpectator || !HasComp(user))) return false; - if (aui.RequireHands && !HasComp(user)) + if (aui.RequireHands && !HasComp(user)) return false; if (!EntityManager.TryGetComponent(user, out ActorComponent? actor)) return false; diff --git a/Content.Server/Verbs/VerbSystem.cs b/Content.Server/Verbs/VerbSystem.cs index ae7fd11e73..28d300ade5 100644 --- a/Content.Server/Verbs/VerbSystem.cs +++ b/Content.Server/Verbs/VerbSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Administration.Managers; using Content.Server.Popups; using Content.Shared.Administration; @@ -6,8 +7,6 @@ using Content.Shared.Database; using Content.Shared.Hands.Components; using Content.Shared.Verbs; using Robust.Server.Player; -using Robust.Shared.Player; -using System.Linq; namespace Content.Server.Verbs { @@ -91,7 +90,7 @@ namespace Content.Server.Verbs { // first get the held item. again. EntityUid? holding = null; - if (TryComp(user, out SharedHandsComponent? hands) && + if (TryComp(user, out HandsComponent? hands) && hands.ActiveHandEntity is EntityUid heldEntity) { holding = heldEntity; diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index ffb361b2f0..234e795861 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -1,6 +1,5 @@ using System.Linq; using Content.Server.Actions.Events; -using Content.Server.Administration.Components; using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; @@ -9,18 +8,18 @@ using Content.Server.CombatMode; using Content.Server.CombatMode.Disarm; using Content.Server.Contests; using Content.Server.Examine; -using Content.Server.Hands.Components; using Content.Server.Movement.Systems; using Content.Shared.Administration.Components; using Content.Shared.CombatMode; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.FixedPoint; +using Content.Shared.Hands.Components; using Content.Shared.IdentityManagement; +using Content.Shared.StatusEffect; using Content.Shared.Verbs; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; -using Content.Shared.StatusEffect; using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Map; diff --git a/Content.Server/Wieldable/WieldableSystem.cs b/Content.Server/Wieldable/WieldableSystem.cs index affda62f21..f158655e47 100644 --- a/Content.Server/Wieldable/WieldableSystem.cs +++ b/Content.Server/Wieldable/WieldableSystem.cs @@ -1,6 +1,7 @@ -using Content.Server.Hands.Components; +using Content.Server.Actions.Events; using Content.Server.Hands.Systems; using Content.Server.Wieldable.Components; +using Content.Shared.DoAfter; using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -8,12 +9,9 @@ using Content.Shared.Interaction.Events; using Content.Shared.Item; using Content.Shared.Popups; using Content.Shared.Verbs; -using Robust.Shared.Player; -using Content.Server.Actions.Events; -using Content.Shared.DoAfter; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Wieldable; - +using Robust.Shared.Player; namespace Content.Server.Wieldable { diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index 304a63b049..4fcf1f03a2 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -2,11 +2,11 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading; using Content.Server.Administration.Logs; -using Content.Server.Hands.Components; using Content.Server.Power.Components; -using Content.Shared.DoAfter; using Content.Shared.Database; +using Content.Shared.DoAfter; using Content.Shared.GameTicking; +using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Tools; diff --git a/Content.Server/Zombies/ZombifyOnDeathSystem.cs b/Content.Server/Zombies/ZombifyOnDeathSystem.cs index b040b0ae77..5c3c262bff 100644 --- a/Content.Server/Zombies/ZombifyOnDeathSystem.cs +++ b/Content.Server/Zombies/ZombifyOnDeathSystem.cs @@ -1,37 +1,37 @@ -using Content.Shared.Damage; -using Content.Shared.Hands.EntitySystems; -using Content.Server.Disease.Components; -using Content.Server.Body.Components; using Content.Server.Atmos.Components; -using Content.Server.Nutrition.Components; -using Content.Server.Popups; -using Content.Server.Speech.Components; +using Content.Server.Atmos.Miasma; +using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.CombatMode; -using Content.Server.Inventory; -using Content.Server.Mind.Components; +using Content.Server.Chat; using Content.Server.Chat.Managers; +using Content.Server.Chat.Systems; +using Content.Server.CombatMode; +using Content.Server.Disease.Components; using Content.Server.Ghost.Roles.Components; -using Content.Server.Hands.Components; +using Content.Server.Humanoid; +using Content.Server.IdentityManagement; +using Content.Server.Inventory; using Content.Server.Mind.Commands; +using Content.Server.Mind.Components; +using Content.Server.Nutrition.Components; +using Content.Server.Popups; +using Content.Server.Speech.Components; using Content.Server.Temperature.Components; -using Content.Shared.Movement.Components; -using Robust.Shared.Prototypes; -using Content.Shared.Roles; using Content.Server.Traitor; -using Content.Shared.Zombies; -using Content.Shared.Popups; -using Content.Server.Atmos.Miasma; -using Content.Server.Humanoid; -using Content.Server.IdentityManagement; +using Content.Shared.Damage; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Humanoid; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; +using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; -using Content.Shared.Weapons.Melee; -using Content.Server.Chat; -using Content.Server.Chat.Systems; using Content.Shared.Nutrition.Components; +using Content.Shared.Popups; +using Content.Shared.Roles; +using Content.Shared.Weapons.Melee; +using Content.Shared.Zombies; +using Robust.Shared.Prototypes; namespace Content.Server.Zombies { diff --git a/Content.Shared/Access/Systems/SharedIdCardSystem.cs b/Content.Shared/Access/Systems/SharedIdCardSystem.cs index dcc5af8bc7..9d8fa64f3e 100644 --- a/Content.Shared/Access/Systems/SharedIdCardSystem.cs +++ b/Content.Shared/Access/Systems/SharedIdCardSystem.cs @@ -3,7 +3,6 @@ using Content.Shared.Access.Components; using Content.Shared.Hands.Components; using Content.Shared.Inventory; using Content.Shared.PDA; -using Robust.Shared.GameStates; namespace Content.Shared.Access.Systems; @@ -18,7 +17,7 @@ public abstract class SharedIdCardSystem : EntitySystem public bool TryFindIdCard(EntityUid uid, [NotNullWhen(true)] out IdCardComponent? idCard) { // check held item? - if (EntityManager.TryGetComponent(uid, out SharedHandsComponent? hands) && + if (EntityManager.TryGetComponent(uid, out HandsComponent? hands) && hands.ActiveHandEntity is EntityUid heldItem && TryGetIdCard(heldItem, out idCard)) { diff --git a/Content.Shared/Blocking/BlockingSystem.cs b/Content.Shared/Blocking/BlockingSystem.cs index 5d4f9cc189..8b1f9b38b7 100644 --- a/Content.Shared/Blocking/BlockingSystem.cs +++ b/Content.Shared/Blocking/BlockingSystem.cs @@ -14,7 +14,6 @@ using Content.Shared.Popups; using Content.Shared.Toggleable; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Dynamics; using Robust.Shared.Physics.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -85,7 +84,7 @@ public sealed partial class BlockingSystem : EntitySystem return; var blockQuery = GetEntityQuery(); - var handQuery = GetEntityQuery(); + var handQuery = GetEntityQuery(); if (!handQuery.TryGetComponent(args.Performer, out var hands)) return; @@ -265,7 +264,7 @@ public sealed partial class BlockingSystem : EntitySystem StopBlocking(uid, component, user); var userQuery = GetEntityQuery(); - var handQuery = GetEntityQuery(); + var handQuery = GetEntityQuery(); if (!handQuery.TryGetComponent(user, out var hands)) return; diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs index f04c4f4b84..4dc4beec39 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs @@ -1,4 +1,7 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.ActionBlocker; +using Content.Shared.Administration.Logs; +using Content.Shared.Database; using Content.Shared.Destructible; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -8,13 +11,9 @@ using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.GameStates; -using Robust.Shared.Player; -using Robust.Shared.Utility; -using System.Diagnostics.CodeAnalysis; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; using Robust.Shared.Network; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Containers.ItemSlots { @@ -193,7 +192,7 @@ namespace Content.Shared.Containers.ItemSlots if (args.Handled) return; - if (!EntityManager.TryGetComponent(args.User, out SharedHandsComponent? hands)) + if (!EntityManager.TryGetComponent(args.User, out HandsComponent? hands)) return; foreach (var slot in itemSlots.Slots.Values) @@ -296,7 +295,7 @@ namespace Content.Shared.Containers.ItemSlots /// Does not check action blockers. /// /// False if failed to insert item - public bool TryInsertFromHand(EntityUid uid, ItemSlot slot, EntityUid user, SharedHandsComponent? hands = null) + public bool TryInsertFromHand(EntityUid uid, ItemSlot slot, EntityUid user, HandsComponent? hands = null) { if (!Resolve(user, ref hands, false)) return false; diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index c972dac701..35898addb3 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -151,7 +151,7 @@ namespace Content.Shared.Cuffs public void UpdateCuffState(EntityUid uid, CuffableComponent component) { - var canInteract = TryComp(uid, out SharedHandsComponent? hands) && hands.Hands.Count > component.CuffedHandCount; + var canInteract = TryComp(uid, out HandsComponent? hands) && hands.Hands.Count > component.CuffedHandCount; if (canInteract == component.CanStillInteract) return; @@ -344,7 +344,7 @@ namespace Content.Shared.Cuffs } var dirty = false; - var handCount = CompOrNull(owner)?.Count ?? 0; + var handCount = CompOrNull(owner)?.Count ?? 0; while (cuffable.CuffedHandCount > handCount && cuffable.CuffedHandCount > 0) { @@ -374,7 +374,7 @@ namespace Content.Shared.Cuffs // TODO we probably don't just want to use the generic virtual-item entity, and instead // want to add our own item, so that use-in-hand triggers an uncuff attempt and the like. - if (!TryComp(uid, out var handsComponent)) + if (!TryComp(uid, out var handsComponent)) return; var freeHands = 0; @@ -427,7 +427,7 @@ namespace Content.Shared.Cuffs if (!Resolve(handcuff, ref handcuffComponent) || !Resolve(target, ref cuffable, false)) return; - if (!TryComp(target, out var hands)) + if (!TryComp(target, out var hands)) { if (_net.IsServer) { diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index a630662765..71a09c700a 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -13,7 +13,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem var time = GameTiming.CurTime; var xformQuery = GetEntityQuery(); - var handsQuery = GetEntityQuery(); + var handsQuery = GetEntityQuery(); var enumerator = EntityQueryEnumerator(); while (enumerator.MoveNext(out var uid, out var active, out var comp)) @@ -28,7 +28,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem DoAfterComponent comp, TimeSpan time, EntityQuery xformQuery, - EntityQuery handsQuery) + EntityQuery handsQuery) { var dirty = false; @@ -122,7 +122,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem private bool ShouldCancel(DoAfter doAfter, EntityQuery xformQuery, - EntityQuery handsQuery) + EntityQuery handsQuery) { var args = doAfter.Args; diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index 2a666d6d96..fab1ece9e7 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -203,7 +203,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem // (or if there is no item there we need to keep it free). if (args.NeedHand && args.BreakOnHandChange) { - if (!TryComp(args.User, out SharedHandsComponent? handsComponent)) + if (!TryComp(args.User, out HandsComponent? handsComponent)) return false; doAfter.InitialHand = handsComponent.ActiveHand?.Name; @@ -211,7 +211,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem } // Inital checks - if (ShouldCancel(doAfter, GetEntityQuery(), GetEntityQuery())) + if (ShouldCancel(doAfter, GetEntityQuery(), GetEntityQuery())) return false; if (args.AttemptFrequency == AttemptFrequency.StartAndEnd && !TryAttemptEvent(doAfter)) diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index b7ad3a799b..4a773a7381 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -1,23 +1,20 @@ +using System.Linq; using Content.Shared.Access.Components; using Content.Shared.Damage; +using Content.Shared.DoAfter; using Content.Shared.Doors.Components; using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Stunnable; +using Content.Shared.Tag; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Physics; -using Robust.Shared.Physics.Dynamics; -using Robust.Shared.Timing; -using System.Linq; -using Content.Shared.DoAfter; -using Content.Shared.Tag; -using Content.Shared.Tools.Components; -using Content.Shared.Verbs; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; using Robust.Shared.Serialization; +using Robust.Shared.Timing; namespace Content.Shared.Doors.Systems; @@ -285,7 +282,7 @@ public abstract class SharedDoorSystem : EntitySystem // component, but no actual hands!? What!? Is this the sound of them head-butting the door to get it to open?? // I'm 99% sure something is wrong here, but I kind of want to keep it this way. - if (user != null && TryComp(user.Value, out SharedHandsComponent? hands) && hands.Hands.Count == 0) + if (user != null && TryComp(user.Value, out HandsComponent? hands) && hands.Hands.Count == 0) PlaySound(uid, door.TryOpenDoorSound, AudioParams.Default.WithVolume(-2), user, predicted); } diff --git a/Content.Shared/Hands/Components/HandHelpers.cs b/Content.Shared/Hands/Components/HandHelpers.cs index 1cf337cc4c..11fff6d9c8 100644 --- a/Content.Shared/Hands/Components/HandHelpers.cs +++ b/Content.Shared/Hands/Components/HandHelpers.cs @@ -12,23 +12,23 @@ public static class HandHelpers /// Returns true if any hand is free. This is a LinQ method, not a property, so /// cache it instead of accessing this multiple times. /// - public static bool IsAnyHandFree(this SharedHandsComponent component) => component.Hands.Values.Any(hand => hand.IsEmpty); + public static bool IsAnyHandFree(this HandsComponent component) => component.Hands.Values.Any(hand => hand.IsEmpty); /// /// Get the number of hands that are not currently holding anything. This is a LinQ method, not a property, so /// cache it instead of accessing this multiple times. /// - public static int CountFreeHands(this SharedHandsComponent component) => component.Hands.Values.Count(hand => hand.IsEmpty); + public static int CountFreeHands(this HandsComponent component) => component.Hands.Values.Count(hand => hand.IsEmpty); /// /// Get a list of hands that are currently holding nothing. This is a LinQ method, not a property, so cache /// it instead of accessing this multiple times. /// - public static IEnumerable GetFreeHands(this SharedHandsComponent component) => component.Hands.Values.Where(hand => !hand.IsEmpty); + public static IEnumerable GetFreeHands(this HandsComponent component) => component.Hands.Values.Where(hand => !hand.IsEmpty); /// /// Get a list of hands that are currently holding nothing. This is a LinQ method, not a property, so cache /// it instead of accessing this multiple times. /// - public static IEnumerable GetFreeHandNames(this SharedHandsComponent component) => GetFreeHands(component).Select(hand => hand.Name); + public static IEnumerable GetFreeHandNames(this HandsComponent component) => GetFreeHands(component).Select(hand => hand.Name); } diff --git a/Content.Shared/Hands/Components/SharedHandsComponent.cs b/Content.Shared/Hands/Components/HandsComponent.cs similarity index 78% rename from Content.Shared/Hands/Components/SharedHandsComponent.cs rename to Content.Shared/Hands/Components/HandsComponent.cs index 5d3a771002..c40d29b895 100644 --- a/Content.Shared/Hands/Components/SharedHandsComponent.cs +++ b/Content.Shared/Hands/Components/HandsComponent.cs @@ -1,11 +1,13 @@ +using Content.Shared.Hands.EntitySystems; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Hands.Components; -[NetworkedComponent] -public abstract class SharedHandsComponent : Component +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedHandsSystem))] +public sealed class HandsComponent : Component { /// /// The currently active hand. @@ -42,6 +44,19 @@ public abstract class SharedHandsComponent : Component [DataField("throwRange")] [ViewVariables(VVAccess.ReadWrite)] public float ThrowRange { get; set; } = 8f; + + /// + /// Whether or not to add in-hand sprites for held items. Some entities (e.g., drones) don't want these. + /// Used by the client. + /// + [DataField("showInHands")] + public bool ShowInHands = true; + + /// + /// Data about the current sprite layers that the hand is contributing to the owner entity. Used for sprite in-hands. + /// Used by the client. + /// + public readonly Dictionary> RevealedLayers = new(); } [Serializable, NetSerializable] @@ -80,7 +95,7 @@ public sealed class HandsComponentState : ComponentState public readonly List HandNames; public readonly string? ActiveHand; - public HandsComponentState(SharedHandsComponent handComp) + public HandsComponentState(HandsComponent handComp) { Hands = new(handComp.Hands.Values); HandNames = handComp.SortedHands; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.AI.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.AI.cs index ad2b2b9bda..1eac3a2263 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.AI.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.AI.cs @@ -1,5 +1,5 @@ -using Content.Shared.Hands.Components; using System.Diagnostics.CodeAnalysis; +using Content.Shared.Hands.Components; namespace Content.Shared.Hands.EntitySystems; @@ -8,7 +8,7 @@ namespace Content.Shared.Hands.EntitySystems; public abstract partial class SharedHandsSystem : EntitySystem { - public bool TrySelect(EntityUid uid, EntityUid? entity, SharedHandsComponent? handsComp = null) + public bool TrySelect(EntityUid uid, EntityUid? entity, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -20,7 +20,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return true; } - public bool TrySelect(EntityUid uid, [NotNullWhen(true)] out TComponent? component, SharedHandsComponent? handsComp = null) where TComponent : Component + public bool TrySelect(EntityUid uid, [NotNullWhen(true)] out TComponent? component, HandsComponent? handsComp = null) where TComponent : Component { component = null; if (!Resolve(uid, ref handsComp, false)) @@ -35,5 +35,5 @@ public abstract partial class SharedHandsSystem : EntitySystem return false; } - public bool TrySelectEmptyHand(EntityUid uid, SharedHandsComponent? handsComp = null) => TrySelect(uid, null, handsComp); + public bool TrySelectEmptyHand(EntityUid uid, HandsComponent? handsComp = null) => TrySelect(uid, null, handsComp); } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index 91a986f372..4d4d8ef085 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -27,7 +27,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Attempts to drop the item in the currently active hand. /// - public bool TryDrop(EntityUid uid, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, SharedHandsComponent? handsComp = null) + public bool TryDrop(EntityUid uid, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -41,7 +41,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Drops an item at the target location. /// - public bool TryDrop(EntityUid uid, EntityUid entity, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, SharedHandsComponent? handsComp = null) + public bool TryDrop(EntityUid uid, EntityUid entity, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -55,7 +55,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Drops a hands contents at the target location. /// - public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, SharedHandsComponent? handsComp = null) + public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocation = null, bool checkActionBlocker = true, bool doDropInteraction = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -90,7 +90,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Attempts to move a held item from a hand into a container that is not another hand, without dropping it on the floor in-between. /// - public bool TryDropIntoContainer(EntityUid uid, EntityUid entity, IContainer targetContainer, bool checkActionBlocker = true, SharedHandsComponent? handsComp = null) + public bool TryDropIntoContainer(EntityUid uid, EntityUid entity, IContainer targetContainer, bool checkActionBlocker = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -133,7 +133,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Removes the contents of a hand from its container. Assumes that the removal is allowed. In general, you should not be calling this directly. /// - public virtual void DoDrop(EntityUid uid, Hand hand, bool doDropInteraction = true, SharedHandsComponent? handsComp = null) + public virtual void DoDrop(EntityUid uid, Hand hand, bool doDropInteraction = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs index 2120565666..439ce3d2db 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs @@ -19,7 +19,7 @@ public abstract partial class SharedHandsSystem : EntitySystem SubscribeAllEvent(HandleMoveItemFromHand); SubscribeAllEvent(HandleHandAltInteract); - SubscribeLocalEvent(HandleExamined); + SubscribeLocalEvent(HandleExamined); CommandBinds.Builder .Bind(ContentKeyFunctions.UseItemInHand, InputCmdHandler.FromDelegate(HandleUseItem, handle: false, outsidePrediction: false)) @@ -74,7 +74,7 @@ public abstract partial class SharedHandsSystem : EntitySystem private void SwapHandsPressed(ICommonSession? session) { - if (!TryComp(session?.AttachedEntity, out SharedHandsComponent? component)) + if (!TryComp(session?.AttachedEntity, out HandsComponent? component)) return; if (!_actionBlocker.CanInteract(session.AttachedEntity.Value, null)) @@ -91,7 +91,7 @@ public abstract partial class SharedHandsSystem : EntitySystem private bool DropPressed(ICommonSession? session, EntityCoordinates coords, EntityUid uid) { - if (TryComp(session?.AttachedEntity, out SharedHandsComponent? hands) && hands.ActiveHand != null) + if (TryComp(session?.AttachedEntity, out HandsComponent? hands) && hands.ActiveHand != null) TryDrop(session.AttachedEntity!.Value, hands.ActiveHand, coords, handsComp: hands); // always send to server. @@ -99,7 +99,7 @@ public abstract partial class SharedHandsSystem : EntitySystem } #endregion - public bool TryActivateItemInHand(EntityUid uid, SharedHandsComponent? handsComp = null, string? handName = null) + public bool TryActivateItemInHand(EntityUid uid, HandsComponent? handsComp = null, string? handName = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -114,7 +114,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return _interactionSystem.InteractionActivate(uid, held); } - public bool TryInteractHandWithActiveHand(EntityUid uid, string handName, SharedHandsComponent? handsComp = null) + public bool TryInteractHandWithActiveHand(EntityUid uid, string handName, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -132,7 +132,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return true; } - public bool TryUseItemInHand(EntityUid uid, bool altInteract = false, SharedHandsComponent? handsComp = null, string? handName = null) + public bool TryUseItemInHand(EntityUid uid, bool altInteract = false, HandsComponent? handsComp = null, string? handName = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -153,7 +153,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Moves an entity from one hand to the active hand. /// - public bool TryMoveHeldEntityToActiveHand(EntityUid uid, string handName, bool checkActionBlocker = true, SharedHandsComponent? handsComp = null) + public bool TryMoveHeldEntityToActiveHand(EntityUid uid, string handName, bool checkActionBlocker = true, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) return false; @@ -178,7 +178,7 @@ public abstract partial class SharedHandsSystem : EntitySystem } //TODO: Actually shows all items/clothing/etc. - private void HandleExamined(EntityUid uid, SharedHandsComponent handsComp, ExaminedEvent args) + private void HandleExamined(EntityUid uid, HandsComponent handsComp, ExaminedEvent args) { foreach (var inhand in EnumerateHeld(uid, handsComp)) { diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index 00bbe11f63..9732d3c215 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -25,7 +25,7 @@ public abstract partial class SharedHandsSystem : EntitySystem bool checkActionBlocker = true, bool animateUser = false, bool animate = true, - SharedHandsComponent? handsComp = null, + HandsComponent? handsComp = null, ItemComponent? item = null) { if (!Resolve(uid, ref handsComp, false)) @@ -54,7 +54,7 @@ public abstract partial class SharedHandsSystem : EntitySystem bool checkActionBlocker = true, bool animateUser = false, bool animate = true, - SharedHandsComponent? handsComp = null, + HandsComponent? handsComp = null, ItemComponent? item = null) { if (!Resolve(uid, ref handsComp, false)) @@ -73,7 +73,7 @@ public abstract partial class SharedHandsSystem : EntitySystem bool checkActionBlocker = true, bool animateUser = false, bool animate = true, - SharedHandsComponent? handsComp = null, + HandsComponent? handsComp = null, ItemComponent? item = null) { if (!Resolve(uid, ref handsComp, false)) @@ -104,7 +104,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return true; } - public bool CanPickupAnyHand(EntityUid uid, EntityUid entity, bool checkActionBlocker = true, SharedHandsComponent? handsComp = null, ItemComponent? item = null) + public bool CanPickupAnyHand(EntityUid uid, EntityUid entity, bool checkActionBlocker = true, HandsComponent? handsComp = null, ItemComponent? item = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -118,7 +118,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Checks whether a given item will fit into a specific user's hand. Unless otherwise specified, this will also check the general CanPickup action blocker. /// - public bool CanPickupToHand(EntityUid uid, EntityUid entity, Hand hand, bool checkActionBlocker = true, SharedHandsComponent? handsComp = null, ItemComponent? item = null) + public bool CanPickupToHand(EntityUid uid, EntityUid entity, Hand hand, bool checkActionBlocker = true, HandsComponent? handsComp = null, ItemComponent? item = null) { if (!Resolve(uid, ref handsComp, false)) return false; @@ -149,7 +149,7 @@ public abstract partial class SharedHandsSystem : EntitySystem bool checkActionBlocker = true, bool animateUser = false, bool animate = true, - SharedHandsComponent? handsComp = null, + HandsComponent? handsComp = null, ItemComponent? item = null) { if (uid == null @@ -166,7 +166,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Puts an entity into the player's hand, assumes that the insertion is allowed. In general, you should not be calling this function directly. /// - public virtual void DoPickup(EntityUid uid, Hand hand, EntityUid entity, SharedHandsComponent? hands = null) + public virtual void DoPickup(EntityUid uid, Hand hand, EntityUid entity, HandsComponent? hands = null) { if (!Resolve(uid, ref hands)) return; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index a826008890..2af4cb456f 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -16,7 +16,7 @@ public abstract partial class SharedHandsSystem : EntitySystem [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; - protected event Action? OnHandSetActive; + protected event Action? OnHandSetActive; public override void Initialize() { @@ -31,7 +31,7 @@ public abstract partial class SharedHandsSystem : EntitySystem CommandBinds.Unregister(); } - public virtual void AddHand(EntityUid uid, string handName, HandLocation handLocation, SharedHandsComponent? handsComp = null) + public virtual void AddHand(EntityUid uid, string handName, HandLocation handLocation, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) return; @@ -53,7 +53,7 @@ public abstract partial class SharedHandsSystem : EntitySystem Dirty(handsComp); } - public virtual void RemoveHand(EntityUid uid, string handName, SharedHandsComponent? handsComp = null) + public virtual void RemoveHand(EntityUid uid, string handName, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) return; @@ -83,7 +83,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Get any empty hand. Prioritizes the currently active hand. /// - public bool TryGetEmptyHand(EntityUid uid, [NotNullWhen(true)] out Hand? emptyHand, SharedHandsComponent? handComp = null) + public bool TryGetEmptyHand(EntityUid uid, [NotNullWhen(true)] out Hand? emptyHand, HandsComponent? handComp = null) { emptyHand = null; if (!Resolve(uid, ref handComp, false)) @@ -104,7 +104,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Enumerate over hands, starting with the currently active hand. /// - public IEnumerable EnumerateHands(EntityUid uid, SharedHandsComponent? handsComp = null) + public IEnumerable EnumerateHands(EntityUid uid, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) yield break; @@ -122,7 +122,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// Enumerate over held items, starting with the item in the currently active hand (if there is one). /// - public IEnumerable EnumerateHeld(EntityUid uid, SharedHandsComponent? handsComp = null) + public IEnumerable EnumerateHeld(EntityUid uid, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp, false)) yield break; @@ -145,7 +145,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// True if the active hand was set to a NEW value. Setting it to the same value returns false and does /// not trigger interactions. - public virtual bool TrySetActiveHand(EntityUid uid, string? name, SharedHandsComponent? handComp = null) + public virtual bool TrySetActiveHand(EntityUid uid, string? name, HandsComponent? handComp = null) { if (!Resolve(uid, ref handComp)) return false; @@ -164,7 +164,7 @@ public abstract partial class SharedHandsSystem : EntitySystem /// /// True if the active hand was set to a NEW value. Setting it to the same value returns false and does /// not trigger interactions. - public bool SetActiveHand(EntityUid uid, Hand? hand, SharedHandsComponent? handComp = null) + public bool SetActiveHand(EntityUid uid, Hand? hand, HandsComponent? handComp = null) { if (!Resolve(uid, ref handComp)) return false; @@ -190,7 +190,7 @@ public abstract partial class SharedHandsSystem : EntitySystem return true; } - public bool IsHolding(EntityUid uid, EntityUid? entity, [NotNullWhen(true)] out Hand? inHand, SharedHandsComponent? handsComp = null) + public bool IsHolding(EntityUid uid, EntityUid? entity, [NotNullWhen(true)] out Hand? inHand, HandsComponent? handsComp = null) { inHand = null; if (!Resolve(uid, ref handsComp, false)) @@ -207,4 +207,15 @@ public abstract partial class SharedHandsSystem : EntitySystem return false; } + + public bool TryGetHand(EntityUid handsUid, string handId, [NotNullWhen(true)] out Hand? hand, + HandsComponent? hands = null) + { + hand = null; + + if (!Resolve(handsUid, ref hands)) + return false; + + return hands.Hands.TryGetValue(handId, out hand); + } } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index b9ae32cf5d..aaee8de719 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -30,7 +30,6 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Serialization; @@ -284,7 +283,7 @@ namespace Content.Shared.Interaction : !checkAccess || InRangeUnobstructed(user, target.Value); // permits interactions with wall mounted entities // Does the user have hands? - if (!TryComp(user, out SharedHandsComponent? hands) || hands.ActiveHand == null) + if (!TryComp(user, out HandsComponent? hands) || hands.ActiveHand == null) { var ev = new InteractNoHandEvent(user, target, coordinates); RaiseLocalEvent(user, ev); @@ -877,7 +876,7 @@ namespace Content.Shared.Interaction return false; // Does the user have hands? - if (!HasComp(user)) + if (!HasComp(user)) return false; var activateMsg = new ActivateInWorldEvent(user, used); diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index cd305bbf96..0baa270cad 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using Content.Shared.ActionBlocker; using Content.Shared.Clothing.Components; using Content.Shared.Hands; using Content.Shared.Hands.Components; @@ -41,7 +40,7 @@ public abstract partial class InventorySystem protected void QuickEquip(EntityUid uid, ClothingComponent component, UseInHandEvent args) { if (!TryComp(args.User, out InventoryComponent? inv) - || !TryComp(args.User, out SharedHandsComponent? hands) + || !TryComp(args.User, out HandsComponent? hands) || !_prototypeManager.TryIndex(inv.TemplateId, out var prototype)) return; @@ -108,7 +107,7 @@ public abstract partial class InventorySystem if (eventArgs.SenderSession.AttachedEntity is not { Valid: true } actor) return; - if (!TryComp(actor, out InventoryComponent? inventory) || !TryComp(actor, out var hands)) + if (!TryComp(actor, out InventoryComponent? inventory) || !TryComp(actor, out var hands)) return; var held = hands.ActiveHandEntity; @@ -245,7 +244,7 @@ public abstract partial class InventorySystem return actor != target && HasComp(target) && HasComp(actor) && - HasComp(actor); + HasComp(actor); } public bool CanEquip(EntityUid uid, EntityUid itemUid, string slot, [NotNullWhen(false)] out string? reason, diff --git a/Content.Shared/Item/SharedMultiHandedItemSystem.cs b/Content.Shared/Item/SharedMultiHandedItemSystem.cs index 98c88feb2a..0259b361b5 100644 --- a/Content.Shared/Item/SharedMultiHandedItemSystem.cs +++ b/Content.Shared/Item/SharedMultiHandedItemSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Popups; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Shared.Item; @@ -27,7 +26,7 @@ public abstract class SharedMultiHandedItemSystem : EntitySystem private void OnAttemptPickup(EntityUid uid, MultiHandedItemComponent component, GettingPickedUpAttemptEvent args) { - if (TryComp(args.User, out var hands) && hands.CountFreeHands() >= component.HandsNeeded) + if (TryComp(args.User, out var hands) && hands.CountFreeHands() >= component.HandsNeeded) return; args.Cancel(); diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 5c01ae0702..c80fbee965 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -1,6 +1,6 @@ -using Content.Shared.Emag.Systems; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; +using Content.Shared.Emag.Systems; using Content.Shared.Examine; using Content.Shared.Hands.Components; using Content.Shared.IdentityManagement; @@ -192,7 +192,7 @@ public sealed class LockSystem : EntitySystem /// public bool CanToggleLock(EntityUid uid, EntityUid user, bool quiet = true) { - if (!HasComp(user)) + if (!HasComp(user)) return false; var ev = new LockToggleAttemptEvent(user, quiet); diff --git a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs index a41ec7ab61..6f506b77c5 100644 --- a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs +++ b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs @@ -387,7 +387,7 @@ public abstract class SharedMechSystem : EntitySystem if (!Resolve(uid, ref component)) return false; - return IsEmpty(component) && _actionBlocker.CanMove(toInsert) && HasComp(toInsert); + return IsEmpty(component) && _actionBlocker.CanMove(toInsert) && HasComp(toInsert); } /// diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 29e5947ae9..b34498677c 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -125,7 +125,7 @@ namespace Content.Shared.Stacks EntityUid item, EntityUid user, StackComponent? itemStack = null, - SharedHandsComponent? hands = null) + HandsComponent? hands = null) { if (!Resolve(user, ref hands, false)) return; diff --git a/Content.Shared/Standing/StandingStateSystem.cs b/Content.Shared/Standing/StandingStateSystem.cs index 7d10036fb0..b09be24aba 100644 --- a/Content.Shared/Standing/StandingStateSystem.cs +++ b/Content.Shared/Standing/StandingStateSystem.cs @@ -1,15 +1,11 @@ -using Content.Shared.Audio; using Content.Shared.Hands.Components; +using Content.Shared.Physics; using Content.Shared.Rotation; using Robust.Shared.Audio; -using Robust.Shared.Player; -using Robust.Shared.Timing; -using Robust.Shared.Physics; -using Content.Shared.Physics; using Robust.Shared.GameStates; -using Robust.Shared.Serialization; -using Robust.Shared.Network; +using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; +using Robust.Shared.Serialization; namespace Content.Shared.Standing { @@ -53,7 +49,7 @@ namespace Content.Shared.Standing public bool Down(EntityUid uid, bool playSound = true, bool dropHeldItems = true, StandingStateComponent? standingState = null, AppearanceComponent? appearance = null, - SharedHandsComponent? hands = null) + HandsComponent? hands = null) { // TODO: This should actually log missing comps... if (!Resolve(uid, ref standingState, false)) diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index cc2a627141..9abcc1a380 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -121,7 +121,7 @@ public abstract class SharedEntityStorageSystem : EntitySystem private void OnRelayMovement(EntityUid uid, SharedEntityStorageComponent component, ref ContainerRelayMovementEntityEvent args) { - if (!HasComp(args.Entity)) + if (!HasComp(args.Entity)) return; if (_timing.CurTime < component.LastInternalOpenAttempt + SharedEntityStorageComponent.InternalOpenAttemptDelay) @@ -311,7 +311,7 @@ public abstract class SharedEntityStorageSystem : EntitySystem if (!Resolve(target, ref component)) return false; - if (!HasComp(user)) + if (!HasComp(user)) return false; if (component.IsWeldedShut) diff --git a/Content.Shared/Strip/SharedStrippableSystem.cs b/Content.Shared/Strip/SharedStrippableSystem.cs index 55aa1febfa..47e1f02ad8 100644 --- a/Content.Shared/Strip/SharedStrippableSystem.cs +++ b/Content.Shared/Strip/SharedStrippableSystem.cs @@ -43,14 +43,14 @@ public abstract class SharedStrippableSystem : EntitySystem args.Handled = true; args.CanDrop |= uid == args.User && HasComp(args.Dragged) && - HasComp(args.User); + HasComp(args.User); } private void OnCanDrop(EntityUid uid, StrippableComponent component, ref CanDropDraggedEvent args) { args.CanDrop |= args.Target == args.User && HasComp(args.User) && - HasComp(args.User); + HasComp(args.User); if (args.CanDrop) args.Handled = true; diff --git a/Content.Shared/Tabletop/SharedTabletopSystem.cs b/Content.Shared/Tabletop/SharedTabletopSystem.cs index d314ff361c..9cb683a918 100644 --- a/Content.Shared/Tabletop/SharedTabletopSystem.cs +++ b/Content.Shared/Tabletop/SharedTabletopSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.ActionBlocker; using Content.Shared.Hands.Components; using Content.Shared.Interaction; @@ -6,9 +7,7 @@ using Content.Shared.Tabletop.Events; using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Players; using Robust.Shared.Serialization; -using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Tabletop { @@ -114,7 +113,7 @@ namespace Content.Shared.Tabletop // CanSeeTable checks interaction action blockers. So no need to check them here. // If this ever changes, so that ghosts can spectate games, then the check needs to be moved here. - return TryComp(playerEntity, out SharedHandsComponent? hands) && hands.Hands.Count > 0; + return TryComp(playerEntity, out HandsComponent? hands) && hands.Hands.Count > 0; } #endregion } diff --git a/Content.Shared/Throwing/ThrownItemSystem.cs b/Content.Shared/Throwing/ThrownItemSystem.cs index d2b4d2dd46..62ae7883a7 100644 --- a/Content.Shared/Throwing/ThrownItemSystem.cs +++ b/Content.Shared/Throwing/ThrownItemSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Hands.Components; @@ -6,9 +7,6 @@ using Content.Shared.Physics.Pull; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Physics; -using Robust.Shared.Physics.Dynamics; -using System.Linq; -using Content.Shared.Sound.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; @@ -129,7 +127,7 @@ namespace Content.Shared.Throwing // Unfortunately we can't check for hands containers as they have specific names. if (uid.TryGetContainerMan(out var containerManager) && - EntityManager.HasComponent(containerManager.Owner)) + EntityManager.HasComponent(containerManager.Owner)) { EntityManager.RemoveComponent(landing, thrownItem); return; diff --git a/Content.Shared/Verbs/SharedVerbSystem.cs b/Content.Shared/Verbs/SharedVerbSystem.cs index 2c38afcb03..a50a377d43 100644 --- a/Content.Shared/Verbs/SharedVerbSystem.cs +++ b/Content.Shared/Verbs/SharedVerbSystem.cs @@ -79,7 +79,7 @@ namespace Content.Shared.Verbs var canInteract = force || _actionBlockerSystem.CanInteract(user, target); EntityUid? @using = null; - if (TryComp(user, out SharedHandsComponent? hands) && (force || _actionBlockerSystem.CanUseHeldEntity(user))) + if (TryComp(user, out HandsComponent? hands) && (force || _actionBlockerSystem.CanUseHeldEntity(user))) { @using = hands.ActiveHandEntity; diff --git a/Content.Shared/Verbs/VerbEvents.cs b/Content.Shared/Verbs/VerbEvents.cs index 256b401592..64b92385c5 100644 --- a/Content.Shared/Verbs/VerbEvents.cs +++ b/Content.Shared/Verbs/VerbEvents.cs @@ -112,7 +112,7 @@ namespace Content.Shared.Verbs /// /// This may be null if the user has no hands. /// - public readonly SharedHandsComponent? Hands; + public readonly HandsComponent? Hands; /// /// The entity currently being held by the active hand. @@ -123,7 +123,7 @@ namespace Content.Shared.Verbs /// public readonly EntityUid? Using; - public GetVerbsEvent(EntityUid user, EntityUid target, EntityUid? @using, SharedHandsComponent? hands, bool canInteract, bool canAccess) + public GetVerbsEvent(EntityUid user, EntityUid target, EntityUid? @using, HandsComponent? hands, bool canInteract, bool canAccess) { User = user; Target = target; diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 39721a6c3e..e5aa4177c2 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -262,7 +262,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem } // Use inhands entity if we got one. - if (EntityManager.TryGetComponent(entity, out SharedHandsComponent? hands) && + if (EntityManager.TryGetComponent(entity, out HandsComponent? hands) && hands.ActiveHandEntity is { } held) { if (EntityManager.TryGetComponent(held, out melee)) diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 34ba12c7cd..13179a24d2 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -10,18 +10,18 @@ using Content.Shared.Hands.Components; using Content.Shared.Interaction.Events; using Content.Shared.Popups; using Content.Shared.Projectiles; +using Content.Shared.Tag; using Content.Shared.Throwing; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; -using Content.Shared.Tag; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Physics.Systems; using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Serialization; @@ -191,7 +191,7 @@ public abstract partial class SharedGunSystem : EntitySystem if (!_combatMode.IsInCombatMode(entity)) return false; - if (EntityManager.TryGetComponent(entity, out SharedHandsComponent? hands) && + if (EntityManager.TryGetComponent(entity, out HandsComponent? hands) && hands.ActiveHandEntity is { } held && TryComp(held, out GunComponent? gun)) { diff --git a/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs b/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs index 972841f1b9..c5801477a3 100644 --- a/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs @@ -1,12 +1,12 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.Audio; -using Content.Shared.Popups; -using Robust.Shared.Random; -using Robust.Shared.Physics.Systems; using Content.Shared.Hands.Components; -using Robust.Shared.GameStates; -using Content.Shared.Weapons.Ranged.Events; -using System.Diagnostics.CodeAnalysis; +using Content.Shared.Popups; using Content.Shared.Projectiles; +using Content.Shared.Weapons.Ranged.Events; +using Robust.Shared.GameStates; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Random; namespace Content.Shared.Weapons.Reflect; @@ -24,8 +24,8 @@ public abstract class SharedReflectSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnHandReflectProjectile); - SubscribeLocalEvent(OnHandsReflectHitscan); + SubscribeLocalEvent(OnHandReflectProjectile); + SubscribeLocalEvent(OnHandsReflectHitscan); SubscribeLocalEvent(OnHandleState); SubscribeLocalEvent(OnGetState); @@ -45,7 +45,7 @@ public abstract class SharedReflectSystem : EntitySystem args.State = new ReflectComponentState(component.Enabled, component.EnergeticChance, component.KineticChance, component.Spread); } - private void OnHandReflectProjectile(EntityUid uid, SharedHandsComponent hands, ref ProjectileReflectAttemptEvent args) + private void OnHandReflectProjectile(EntityUid uid, HandsComponent hands, ref ProjectileReflectAttemptEvent args) { if (args.Cancelled) return; @@ -78,7 +78,7 @@ public abstract class SharedReflectSystem : EntitySystem return false; } - private void OnHandsReflectHitscan(EntityUid uid, SharedHandsComponent hands, ref HitScanReflectAttemptEvent args) + private void OnHandsReflectHitscan(EntityUid uid, HandsComponent hands, ref HitScanReflectAttemptEvent args) { if (args.Reflected) return; -- 2.51.2