diff --git a/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs b/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs index 9454697001..e3411f5ebb 100644 --- a/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs +++ b/Content.Server/AI/Operators/Combat/Melee/SwingMeleeWeaponOperator.cs @@ -9,6 +9,8 @@ namespace Content.Server.AI.Operators.Combat.Melee { public class SwingMeleeWeaponOperator : AiOperator { + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly float _burstTime; private float _elapsedTime; @@ -17,6 +19,8 @@ namespace Content.Server.AI.Operators.Combat.Melee public SwingMeleeWeaponOperator(EntityUid owner, EntityUid target, float burstTime = 1.0f) { + IoCManager.InjectDependencies(this); + _owner = owner; _target = target; _burstTime = burstTime; @@ -29,7 +33,7 @@ namespace Content.Server.AI.Operators.Combat.Melee return true; } - if (!IoCManager.Resolve().TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) + if (!_entMan.TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) { return false; } @@ -47,7 +51,7 @@ namespace Content.Server.AI.Operators.Combat.Melee if (!base.Shutdown(outcome)) return false; - if (IoCManager.Resolve().TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) + if (_entMan.TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) { combatModeComponent.IsInCombatMode = false; } @@ -62,15 +66,15 @@ namespace Content.Server.AI.Operators.Combat.Melee return Outcome.Success; } - if (!IoCManager.Resolve().TryGetComponent(_owner, out HandsComponent? hands) || hands.GetActiveHand == null) + if (!_entMan.TryGetComponent(_owner, out HandsComponent? hands) || hands.GetActiveHand == null) { return Outcome.Failed; } var meleeWeapon = hands.GetActiveHand.Owner; - IoCManager.Resolve().TryGetComponent(meleeWeapon, out MeleeWeaponComponent? meleeWeaponComponent); + _entMan.TryGetComponent(meleeWeapon, out MeleeWeaponComponent? meleeWeaponComponent); - if ((IoCManager.Resolve().GetComponent(_target).Coordinates.Position - IoCManager.Resolve().GetComponent(_owner).Coordinates.Position).Length > + if ((_entMan.GetComponent(_target).Coordinates.Position - _entMan.GetComponent(_owner).Coordinates.Position).Length > meleeWeaponComponent?.Range) { return Outcome.Failed; @@ -78,7 +82,7 @@ namespace Content.Server.AI.Operators.Combat.Melee var interactionSystem = IoCManager.Resolve().GetEntitySystem(); - interactionSystem.AiUseInteraction(_owner, IoCManager.Resolve().GetComponent(_target).Coordinates, _target); + interactionSystem.AiUseInteraction(_owner, _entMan.GetComponent(_target).Coordinates, _target); _elapsedTime += frameTime; return Outcome.Continuing; } diff --git a/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs b/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs index c02ec75f5f..81d05f7c8d 100644 --- a/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs +++ b/Content.Server/AI/Operators/Combat/Melee/UnarmedCombatOperator.cs @@ -8,6 +8,8 @@ namespace Content.Server.AI.Operators.Combat.Melee { public sealed class UnarmedCombatOperator : AiOperator { + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly float _burstTime; private float _elapsedTime; @@ -17,6 +19,8 @@ namespace Content.Server.AI.Operators.Combat.Melee public UnarmedCombatOperator(EntityUid owner, EntityUid target, float burstTime = 1.0f) { + IoCManager.InjectDependencies(this); + _owner = owner; _target = target; _burstTime = burstTime; @@ -29,7 +33,7 @@ namespace Content.Server.AI.Operators.Combat.Melee return true; } - if (!IoCManager.Resolve().TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) + if (!_entMan.TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) { return false; } @@ -39,7 +43,7 @@ namespace Content.Server.AI.Operators.Combat.Melee combatModeComponent.IsInCombatMode = true; } - if (IoCManager.Resolve().TryGetComponent(_owner, out UnarmedCombatComponent? unarmedCombatComponent)) + if (_entMan.TryGetComponent(_owner, out UnarmedCombatComponent? unarmedCombatComponent)) { _unarmedCombat = unarmedCombatComponent; } @@ -56,7 +60,7 @@ namespace Content.Server.AI.Operators.Combat.Melee if (!base.Shutdown(outcome)) return false; - if (IoCManager.Resolve().TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) + if (_entMan.TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) { combatModeComponent.IsInCombatMode = false; } @@ -76,14 +80,14 @@ namespace Content.Server.AI.Operators.Combat.Melee return Outcome.Failed; } - if ((IoCManager.Resolve().GetComponent(_target).Coordinates.Position - IoCManager.Resolve().GetComponent(_owner).Coordinates.Position).Length > + if ((_entMan.GetComponent(_target).Coordinates.Position - _entMan.GetComponent(_owner).Coordinates.Position).Length > _unarmedCombat.Range) { return Outcome.Failed; } var interactionSystem = IoCManager.Resolve().GetEntitySystem(); - interactionSystem.AiUseInteraction(_owner, IoCManager.Resolve().GetComponent(_target).Coordinates, _target); + interactionSystem.AiUseInteraction(_owner, _entMan.GetComponent(_target).Coordinates, _target); _elapsedTime += frameTime; return Outcome.Continuing; } diff --git a/Content.Server/AI/Operators/Inventory/InteractWithEntityOperator.cs b/Content.Server/AI/Operators/Inventory/InteractWithEntityOperator.cs index 746c8510af..ed353d61d2 100644 --- a/Content.Server/AI/Operators/Inventory/InteractWithEntityOperator.cs +++ b/Content.Server/AI/Operators/Inventory/InteractWithEntityOperator.cs @@ -11,11 +11,15 @@ namespace Content.Server.AI.Operators.Inventory /// public class InteractWithEntityOperator : AiOperator { + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly EntityUid _owner; private readonly EntityUid _useTarget; public InteractWithEntityOperator(EntityUid owner, EntityUid useTarget) { + IoCManager.InjectDependencies(this); + _owner = owner; _useTarget = useTarget; @@ -23,7 +27,9 @@ namespace Content.Server.AI.Operators.Inventory public override Outcome Execute(float frameTime) { - if (IoCManager.Resolve().GetComponent(_useTarget).GridID != IoCManager.Resolve().GetComponent(_owner).GridID) + var targetTransform = _entMan.GetComponent(_useTarget); + + if (targetTransform.GridID != _entMan.GetComponent(_owner).GridID) { return Outcome.Failed; } @@ -33,14 +39,14 @@ namespace Content.Server.AI.Operators.Inventory return Outcome.Failed; } - if (IoCManager.Resolve().TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) + if (_entMan.TryGetComponent(_owner, out CombatModeComponent? combatModeComponent)) { combatModeComponent.IsInCombatMode = false; } // Click on da thing - var interactionSystem = IoCManager.Resolve().GetEntitySystem(); - interactionSystem.AiUseInteraction(_owner, IoCManager.Resolve().GetComponent(_useTarget).Coordinates, _useTarget); + var interactionSystem = EntitySystem.Get(); + interactionSystem.AiUseInteraction(_owner, targetTransform.Coordinates, _useTarget); return Outcome.Success; } diff --git a/Content.Server/AI/Operators/Inventory/PickupEntityOperator.cs b/Content.Server/AI/Operators/Inventory/PickupEntityOperator.cs index 4dfb9cc588..5def6d3f43 100644 --- a/Content.Server/AI/Operators/Inventory/PickupEntityOperator.cs +++ b/Content.Server/AI/Operators/Inventory/PickupEntityOperator.cs @@ -22,15 +22,17 @@ namespace Content.Server.AI.Operators.Inventory public override Outcome Execute(float frameTime) { - if ((!IoCManager.Resolve().EntityExists(_target) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(_target).EntityLifeStage) >= EntityLifeStage.Deleted || - !IoCManager.Resolve().HasComponent(_target) || - _target.IsInContainer() || - !_owner.InRangeUnobstructed(_target, popup: true)) + var entMan = IoCManager.Resolve(); + + if (entMan.Deleted(_target) + || !entMan.HasComponent(_target) + || _target.IsInContainer() + || !_owner.InRangeUnobstructed(_target, popup: true)) { return Outcome.Failed; } - if (!IoCManager.Resolve().TryGetComponent(_owner, out HandsComponent? handsComponent)) + if (!entMan.TryGetComponent(_owner, out HandsComponent? handsComponent)) { return Outcome.Failed; } @@ -56,7 +58,7 @@ namespace Content.Server.AI.Operators.Inventory return Outcome.Failed; } - var interactionSystem = IoCManager.Resolve().GetEntitySystem(); + var interactionSystem = EntitySystem.Get(); interactionSystem.InteractHand(_owner, _target); return Outcome.Success; } diff --git a/Content.Server/AI/Operators/Inventory/UseItemInInventoryOperator.cs b/Content.Server/AI/Operators/Inventory/UseItemInInventoryOperator.cs index bc7905967b..1670277b61 100644 --- a/Content.Server/AI/Operators/Inventory/UseItemInInventoryOperator.cs +++ b/Content.Server/AI/Operators/Inventory/UseItemInInventoryOperator.cs @@ -21,13 +21,15 @@ namespace Content.Server.AI.Operators.Inventory public override Outcome Execute(float frameTime) { + var entMan = IoCManager.Resolve(); + // TODO: Also have this check storage a la backpack etc. - if (!IoCManager.Resolve().TryGetComponent(_owner, out HandsComponent? handsComponent)) + if (!entMan.TryGetComponent(_owner, out HandsComponent? handsComponent)) { return Outcome.Failed; } - if (!IoCManager.Resolve().TryGetComponent(_target, out ItemComponent? itemComponent)) + if (!entMan.TryGetComponent(_target, out ItemComponent? itemComponent)) { return Outcome.Failed; } diff --git a/Content.Server/AI/Pathfinding/Accessible/ReachableArgs.cs b/Content.Server/AI/Pathfinding/Accessible/ReachableArgs.cs index 79823f9b2b..2e001502d6 100644 --- a/Content.Server/AI/Pathfinding/Accessible/ReachableArgs.cs +++ b/Content.Server/AI/Pathfinding/Accessible/ReachableArgs.cs @@ -28,14 +28,15 @@ namespace Content.Server.AI.Pathfinding.Accessible public static ReachableArgs GetArgs(EntityUid entity) { var collisionMask = 0; - if (IoCManager.Resolve().TryGetComponent(entity, out IPhysBody? physics)) + var entMan = IoCManager.Resolve(); + if (entMan.TryGetComponent(entity, out IPhysBody? physics)) { collisionMask = physics.CollisionMask; } var accessSystem = EntitySystem.Get(); var access = accessSystem.FindAccessTags(entity); - var visionRadius = IoCManager.Resolve().GetComponent(entity).VisionRadius; + var visionRadius = entMan.GetComponent(entity).VisionRadius; return new ReachableArgs(visionRadius, access, collisionMask); } diff --git a/Content.Server/AI/Pathfinding/PathfindingNode.cs b/Content.Server/AI/Pathfinding/PathfindingNode.cs index 24716cd826..bbd78cfb8d 100644 --- a/Content.Server/AI/Pathfinding/PathfindingNode.cs +++ b/Content.Server/AI/Pathfinding/PathfindingNode.cs @@ -260,14 +260,15 @@ namespace Content.Server.AI.Pathfinding /// TODO: Could probably optimise this slightly more. public void AddEntity(EntityUid entity, IPhysBody physicsComponent) { + var entMan = IoCManager.Resolve(); // If we're a door - if (IoCManager.Resolve().HasComponent(entity) || IoCManager.Resolve().HasComponent(entity)) + if (entMan.HasComponent(entity) || entMan.HasComponent(entity)) { // If we need access to traverse this then add to readers, otherwise no point adding it (except for maybe tile costs in future) // TODO: Check for powered I think (also need an event for when it's depowered // AccessReader calls this whenever opening / closing but it can seem to get called multiple times // Which may or may not be intended? - if (IoCManager.Resolve().TryGetComponent(entity, out AccessReader? accessReader) && !_accessReaders.ContainsKey(entity)) + if (entMan.TryGetComponent(entity, out AccessReader? accessReader) && !_accessReaders.ContainsKey(entity)) { _accessReaders.Add(entity, accessReader); ParentChunk.Dirty(); diff --git a/Content.Server/AI/Utility/Actions/Test/MoveRightAndLeftTen.cs b/Content.Server/AI/Utility/Actions/Test/MoveRightAndLeftTen.cs index 868dc2fb28..0e5955c39b 100644 --- a/Content.Server/AI/Utility/Actions/Test/MoveRightAndLeftTen.cs +++ b/Content.Server/AI/Utility/Actions/Test/MoveRightAndLeftTen.cs @@ -19,8 +19,9 @@ namespace Content.Server.AI.Utility.Actions.Test public override void SetupOperators(Blackboard context) { - var currentPosition = IoCManager.Resolve().GetComponent(Owner).Coordinates; - var nextPosition = IoCManager.Resolve().GetComponent(Owner).Coordinates.Offset(new Vector2(10.0f, 0.0f)); + var entMan = IoCManager.Resolve(); + var currentPosition = entMan.GetComponent(Owner).Coordinates; + var nextPosition = entMan.GetComponent(Owner).Coordinates.Offset(new Vector2(10.0f, 0.0f)); var originalPosOp = new MoveToGridOperator(Owner, currentPosition, 0.25f); var newPosOp = new MoveToGridOperator(Owner, nextPosition, 0.25f); diff --git a/Content.Server/AI/Utility/Considerations/Combat/TargetHealthCon.cs b/Content.Server/AI/Utility/Considerations/Combat/TargetHealthCon.cs index e3bc538c45..47f23d0f41 100644 --- a/Content.Server/AI/Utility/Considerations/Combat/TargetHealthCon.cs +++ b/Content.Server/AI/Utility/Considerations/Combat/TargetHealthCon.cs @@ -12,7 +12,7 @@ namespace Content.Server.AI.Utility.Considerations.Combat { var target = context.GetState().GetValue(); - if (target == null || !IoCManager.Resolve().EntityExists(target) || !IoCManager.Resolve().TryGetComponent(target, out DamageableComponent? damageableComponent)) + if (target == null || !IoCManager.Resolve().TryGetComponent(target, out DamageableComponent? damageableComponent)) { return 0.0f; } diff --git a/Content.Server/AI/Utility/Considerations/Nutrition/Drink/DrinkValueCon.cs b/Content.Server/AI/Utility/Considerations/Nutrition/Drink/DrinkValueCon.cs index 2d18ea9cd3..e7a7fbc5ca 100644 --- a/Content.Server/AI/Utility/Considerations/Nutrition/Drink/DrinkValueCon.cs +++ b/Content.Server/AI/Utility/Considerations/Nutrition/Drink/DrinkValueCon.cs @@ -14,7 +14,7 @@ namespace Content.Server.AI.Utility.Considerations.Nutrition.Drink var target = context.GetState().GetValue(); if (target == null - || (!IoCManager.Resolve().EntityExists(target) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(target).EntityLifeStage) >= EntityLifeStage.Deleted + || IoCManager.Resolve().Deleted(target) || !EntitySystem.Get().TryGetSolution(target, DrinkComponent.DefaultSolutionName, out var drink)) { return 0.0f; diff --git a/Content.Server/AI/Utility/Considerations/Nutrition/Food/FoodValueCon.cs b/Content.Server/AI/Utility/Considerations/Nutrition/Food/FoodValueCon.cs index 3b305d47b2..3341d8a193 100644 --- a/Content.Server/AI/Utility/Considerations/Nutrition/Food/FoodValueCon.cs +++ b/Content.Server/AI/Utility/Considerations/Nutrition/Food/FoodValueCon.cs @@ -13,8 +13,7 @@ namespace Content.Server.AI.Utility.Considerations.Nutrition.Food { var target = context.GetState().GetValue(); - if (target == null || !IoCManager.Resolve().EntityExists(target) - || !IoCManager.Resolve().TryGetComponent(target, out var foodComp) + if (target == null || !IoCManager.Resolve().TryGetComponent(target, out var foodComp) || !EntitySystem.Get().TryGetSolution(target, foodComp.SolutionName, out var food)) { return 0.0f; diff --git a/Content.Server/AI/Utils/Visibility.cs b/Content.Server/AI/Utils/Visibility.cs index 128a2c8cd7..772b94d63e 100644 --- a/Content.Server/AI/Utils/Visibility.cs +++ b/Content.Server/AI/Utils/Visibility.cs @@ -12,8 +12,9 @@ namespace Content.Server.AI.Utils // Should this be in robust or something? Fark it public static IEnumerable GetNearestEntities(EntityCoordinates grid, Type component, float range) { + var entMan = IoCManager.Resolve(); var inRange = GetEntitiesInRange(grid, component, range).ToList(); - var sortedInRange = inRange.OrderBy(o => (IoCManager.Resolve().GetComponent(o).Coordinates.Position - grid.Position).Length); + var sortedInRange = inRange.OrderBy(o => (entMan.GetComponent(o).Coordinates.Position - grid.Position).Length); return sortedInRange; } @@ -23,12 +24,14 @@ namespace Content.Server.AI.Utils var entityManager = IoCManager.Resolve(); foreach (var entity in entityManager.GetAllComponents(component).Select(c => c.Owner)) { - if (IoCManager.Resolve().GetComponent(entity).Coordinates.GetGridId(entityManager) != grid.GetGridId(entityManager)) + var transform = entityManager.GetComponent(entity); + + if (transform.Coordinates.GetGridId(entityManager) != grid.GetGridId(entityManager)) { continue; } - if ((IoCManager.Resolve().GetComponent(entity).Coordinates.Position - grid.Position).Length <= range) + if ((transform.Coordinates.Position - grid.Position).Length <= range) { yield return entity; } diff --git a/Content.Server/AI/WorldState/States/Clothing/NearbyClothingState.cs b/Content.Server/AI/WorldState/States/Clothing/NearbyClothingState.cs index c239437713..e4f35c5f8a 100644 --- a/Content.Server/AI/WorldState/States/Clothing/NearbyClothingState.cs +++ b/Content.Server/AI/WorldState/States/Clothing/NearbyClothingState.cs @@ -19,17 +19,17 @@ namespace Content.Server.AI.WorldState.States.Clothing { var result = new List(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + var entMan = IoCManager.Resolve(); + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } - foreach (var entity in Visibility - .GetNearestEntities(IoCManager.Resolve().GetComponent(Owner).Coordinates, typeof(ClothingComponent), controller.VisionRadius)) + foreach (var entity in Visibility.GetNearestEntities(entMan.GetComponent(Owner).Coordinates, typeof(ClothingComponent), controller.VisionRadius)) { if (entity.TryGetContainer(out var container)) { - if (!IoCManager.Resolve().HasComponent(container.Owner)) + if (!entMan.HasComponent(container.Owner)) { continue; } diff --git a/Content.Server/AI/WorldState/States/Combat/Nearby/NearbyMeleeWeapons.cs b/Content.Server/AI/WorldState/States/Combat/Nearby/NearbyMeleeWeapons.cs index 53d994031f..7e6b1e6024 100644 --- a/Content.Server/AI/WorldState/States/Combat/Nearby/NearbyMeleeWeapons.cs +++ b/Content.Server/AI/WorldState/States/Combat/Nearby/NearbyMeleeWeapons.cs @@ -16,14 +16,14 @@ namespace Content.Server.AI.WorldState.States.Combat.Nearby protected override List GetTrueValue() { var result = new List(); + var entMan = IoCManager.Resolve(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } - foreach (var entity in Visibility - .GetNearestEntities(IoCManager.Resolve().GetComponent(Owner).Coordinates, typeof(MeleeWeaponComponent), controller.VisionRadius)) + foreach (var entity in Visibility.GetNearestEntities(entMan.GetComponent(Owner).Coordinates, typeof(MeleeWeaponComponent), controller.VisionRadius)) { result.Add(entity); } diff --git a/Content.Server/AI/WorldState/States/Inventory/InventoryState.cs b/Content.Server/AI/WorldState/States/Inventory/InventoryState.cs index 857ffe4eb0..0294dfd93a 100644 --- a/Content.Server/AI/WorldState/States/Inventory/InventoryState.cs +++ b/Content.Server/AI/WorldState/States/Inventory/InventoryState.cs @@ -13,11 +13,12 @@ namespace Content.Server.AI.WorldState.States.Inventory public override IEnumerable GetValue() { - if (IoCManager.Resolve().TryGetComponent(Owner, out HandsComponent? handsComponent)) + var entMan = IoCManager.Resolve(); + if (entMan.TryGetComponent(Owner, out HandsComponent? handsComponent)) { foreach (var item in handsComponent.GetAllHeldItems()) { - if ((!IoCManager.Resolve().EntityExists(item.Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(item.Owner).EntityLifeStage) >= EntityLifeStage.Deleted) + if (entMan.Deleted(item.Owner)) continue; yield return item.Owner; diff --git a/Content.Server/AI/WorldState/States/Mobs/NearbyBodiesState.cs b/Content.Server/AI/WorldState/States/Mobs/NearbyBodiesState.cs index 4bbfe3957d..98209d1f96 100644 --- a/Content.Server/AI/WorldState/States/Mobs/NearbyBodiesState.cs +++ b/Content.Server/AI/WorldState/States/Mobs/NearbyBodiesState.cs @@ -16,13 +16,14 @@ namespace Content.Server.AI.WorldState.States.Mobs protected override List GetTrueValue() { var result = new List(); + var entMan = IoCManager.Resolve(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } - foreach (var entity in Visibility.GetEntitiesInRange(IoCManager.Resolve().GetComponent(Owner).Coordinates, typeof(SharedBodyComponent), controller.VisionRadius)) + foreach (var entity in Visibility.GetEntitiesInRange(entMan.GetComponent(Owner).Coordinates, typeof(SharedBodyComponent), controller.VisionRadius)) { if (entity == Owner) continue; result.Add(entity); diff --git a/Content.Server/AI/WorldState/States/Mobs/NearbyPlayersState.cs b/Content.Server/AI/WorldState/States/Mobs/NearbyPlayersState.cs index e7cd8412ad..e3b1c64226 100644 --- a/Content.Server/AI/WorldState/States/Mobs/NearbyPlayersState.cs +++ b/Content.Server/AI/WorldState/States/Mobs/NearbyPlayersState.cs @@ -17,13 +17,14 @@ namespace Content.Server.AI.WorldState.States.Mobs { var result = new List(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + var entMan = IoCManager.Resolve(); + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } var nearbyPlayers = Filter.Empty() - .AddInRange(IoCManager.Resolve().GetComponent(Owner).MapPosition, controller.VisionRadius) + .AddInRange(entMan.GetComponent(Owner).MapPosition, controller.VisionRadius) .Recipients; foreach (var player in nearbyPlayers) @@ -33,7 +34,7 @@ namespace Content.Server.AI.WorldState.States.Mobs continue; } - if (player.AttachedEntity != Owner && IoCManager.Resolve().HasComponent(playerEntity)) + if (player.AttachedEntity != Owner && entMan.HasComponent(playerEntity)) { result.Add(playerEntity); } diff --git a/Content.Server/AI/WorldState/States/Nutrition/NearbyDrinkState.cs b/Content.Server/AI/WorldState/States/Nutrition/NearbyDrinkState.cs index c69dcaaf60..1ff8f2d28e 100644 --- a/Content.Server/AI/WorldState/States/Nutrition/NearbyDrinkState.cs +++ b/Content.Server/AI/WorldState/States/Nutrition/NearbyDrinkState.cs @@ -18,18 +18,19 @@ namespace Content.Server.AI.WorldState.States.Nutrition protected override List GetTrueValue() { var result = new List(); + var entMan = IoCManager.Resolve(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } foreach (var entity in Visibility - .GetNearestEntities(IoCManager.Resolve().GetComponent(Owner).Coordinates, typeof(DrinkComponent), controller.VisionRadius)) + .GetNearestEntities(entMan.GetComponent(Owner).Coordinates, typeof(DrinkComponent), controller.VisionRadius)) { if (entity.TryGetContainer(out var container)) { - if (!IoCManager.Resolve().HasComponent(container.Owner)) + if (!entMan.HasComponent(container.Owner)) { continue; } diff --git a/Content.Server/AI/WorldState/States/Nutrition/NearbyFoodState.cs b/Content.Server/AI/WorldState/States/Nutrition/NearbyFoodState.cs index 3614292748..156670cfd4 100644 --- a/Content.Server/AI/WorldState/States/Nutrition/NearbyFoodState.cs +++ b/Content.Server/AI/WorldState/States/Nutrition/NearbyFoodState.cs @@ -18,18 +18,19 @@ namespace Content.Server.AI.WorldState.States.Nutrition protected override List GetTrueValue() { var result = new List(); + var entMan = IoCManager.Resolve(); - if (!IoCManager.Resolve().TryGetComponent(Owner, out AiControllerComponent? controller)) + if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } foreach (var entity in Visibility - .GetNearestEntities(IoCManager.Resolve().GetComponent(Owner).Coordinates, typeof(FoodComponent), controller.VisionRadius)) + .GetNearestEntities(entMan.GetComponent(Owner).Coordinates, typeof(FoodComponent), controller.VisionRadius)) { if (entity.TryGetContainer(out var container)) { - if (!IoCManager.Resolve().HasComponent(container.Owner)) + if (!entMan.HasComponent(container.Owner)) { continue; } diff --git a/Content.Server/AME/AMENodeGroup.cs b/Content.Server/AME/AMENodeGroup.cs index 4617946964..83bfa2654b 100644 --- a/Content.Server/AME/AMENodeGroup.cs +++ b/Content.Server/AME/AMENodeGroup.cs @@ -27,8 +27,9 @@ namespace Content.Server.AME [ViewVariables] private AMEControllerComponent? _masterController; - [Dependency] - private readonly IRobustRandom _random = default!; + [Dependency] private readonly IRobustRandom _random = default!; + + [Dependency] private readonly IEntityManager _entMan = default!; public AMEControllerComponent? MasterController => _masterController; @@ -46,10 +47,10 @@ namespace Content.Server.AME foreach (var node in groupNodes) { var nodeOwner = node.Owner; - if (IoCManager.Resolve().TryGetComponent(nodeOwner, out AMEShieldComponent? shield)) + if (_entMan.TryGetComponent(nodeOwner, out AMEShieldComponent? shield)) { - var nodeNeighbors = grid.GetCellsInSquareArea(IoCManager.Resolve().GetComponent(nodeOwner).Coordinates, 1) - .Where(entity => entity != nodeOwner && IoCManager.Resolve().HasComponent(entity)); + var nodeNeighbors = grid.GetCellsInSquareArea(_entMan.GetComponent(nodeOwner).Coordinates, 1) + .Where(entity => entity != nodeOwner && _entMan.HasComponent(entity)); if (nodeNeighbors.Count() >= 8) { @@ -68,7 +69,7 @@ namespace Content.Server.AME foreach (var node in groupNodes) { var nodeOwner = node.Owner; - if (IoCManager.Resolve().TryGetComponent(nodeOwner, out AMEControllerComponent? controller)) + if (_entMan.TryGetComponent(nodeOwner, out AMEControllerComponent? controller)) { if (_masterController == null) { diff --git a/Content.Server/AME/Components/AMEPartComponent.cs b/Content.Server/AME/Components/AMEPartComponent.cs index 4858674075..4e33af6e8c 100644 --- a/Content.Server/AME/Components/AMEPartComponent.cs +++ b/Content.Server/AME/Components/AMEPartComponent.cs @@ -35,7 +35,7 @@ namespace Content.Server.AME.Components async Task IInteractUsing.InteractUsing(InteractUsingEventArgs args) { - if (!IoCManager.Resolve().HasComponent(args.User)) + if (!_serverEntityManager.HasComponent(args.User)) { Owner.PopupMessage(args.User, Loc.GetString("ame-part-component-interact-using-no-hands")); return false; @@ -58,7 +58,7 @@ namespace Content.Server.AME.Components SoundSystem.Play(Filter.Pvs(Owner), _unwrapSound.GetSound(), Owner); - IoCManager.Resolve().QueueDeleteEntity(Owner); + _serverEntityManager.QueueDeleteEntity(Owner); return true; } diff --git a/Content.Server/AME/Components/AMEShieldComponent.cs b/Content.Server/AME/Components/AMEShieldComponent.cs index ac86d5ccf8..1708e0c700 100644 --- a/Content.Server/AME/Components/AMEShieldComponent.cs +++ b/Content.Server/AME/Components/AMEShieldComponent.cs @@ -22,8 +22,9 @@ namespace Content.Server.AME.Components protected override void Initialize() { base.Initialize(); - IoCManager.Resolve().TryGetComponent(Owner, out _appearance); - IoCManager.Resolve().TryGetComponent(Owner, out _pointLight); + var entMan = IoCManager.Resolve(); + entMan.TryGetComponent(Owner, out _appearance); + entMan.TryGetComponent(Owner, out _pointLight); } public void SetCore() diff --git a/Content.Server/Actions/Actions/DebugTargetEntity.cs b/Content.Server/Actions/Actions/DebugTargetEntity.cs index e2b5cab049..d30679e9f9 100644 --- a/Content.Server/Actions/Actions/DebugTargetEntity.cs +++ b/Content.Server/Actions/Actions/DebugTargetEntity.cs @@ -13,14 +13,15 @@ namespace Content.Server.Actions.Actions { public void DoTargetEntityAction(TargetEntityItemActionEventArgs args) { - args.Performer.PopupMessageEveryone(IoCManager.Resolve().GetComponent(args.Item).EntityName + ": Clicked " + - IoCManager.Resolve().GetComponent(args.Target).EntityName); + var entMan = IoCManager.Resolve(); + + args.Performer.PopupMessageEveryone(entMan.GetComponent(args.Item).EntityName + ": Clicked " + + entMan.GetComponent(args.Target).EntityName); } public void DoTargetEntityAction(TargetEntityActionEventArgs args) { - args.Performer.PopupMessageEveryone("Clicked " + - IoCManager.Resolve().GetComponent(args.Target).EntityName); + args.Performer.PopupMessageEveryone("Clicked " + IoCManager.Resolve().GetComponent(args.Target).EntityName); } } } diff --git a/Content.Server/Actions/Actions/DebugToggle.cs b/Content.Server/Actions/Actions/DebugToggle.cs index b1d18fb68f..44370bc023 100644 --- a/Content.Server/Actions/Actions/DebugToggle.cs +++ b/Content.Server/Actions/Actions/DebugToggle.cs @@ -17,13 +17,15 @@ namespace Content.Server.Actions.Actions public bool DoToggleAction(ToggleItemActionEventArgs args) { + var entMan = IoCManager.Resolve(); + if (args.ToggledOn) { - args.Performer.PopupMessageEveryone(IoCManager.Resolve().GetComponent(args.Item).EntityName + ": " + MessageOn); + args.Performer.PopupMessageEveryone(entMan.GetComponent(args.Item).EntityName + ": " + MessageOn); } else { - args.Performer.PopupMessageEveryone(IoCManager.Resolve().GetComponent(args.Item).EntityName + ": " +MessageOff); + args.Performer.PopupMessageEveryone(entMan.GetComponent(args.Item).EntityName + ": " +MessageOff); } return true; diff --git a/Content.Server/Actions/Actions/DisarmAction.cs b/Content.Server/Actions/Actions/DisarmAction.cs index a3cfb5c2e8..90d0bc94ea 100644 --- a/Content.Server/Actions/Actions/DisarmAction.cs +++ b/Content.Server/Actions/Actions/DisarmAction.cs @@ -47,17 +47,18 @@ namespace Content.Server.Actions.Actions public void DoTargetEntityAction(TargetEntityActionEventArgs args) { - var disarmedActs = IoCManager.Resolve().GetComponents(args.Target).ToArray(); + var entMan = IoCManager.Resolve(); + var disarmedActs = entMan.GetComponents(args.Target).ToArray(); if (!args.Performer.InRangeUnobstructed(args.Target)) return; if (disarmedActs.Length == 0) { - if (IoCManager.Resolve().TryGetComponent(args.Performer, out ActorComponent? actor)) + if (entMan.TryGetComponent(args.Performer, out ActorComponent? actor)) { // Fall back to a normal interaction with the entity var player = actor.PlayerSession; - var coordinates = IoCManager.Resolve().GetComponent(args.Target).Coordinates; + var coordinates = entMan.GetComponent(args.Target).Coordinates; var target = args.Target; EntitySystem.Get().HandleUseInteraction(player, coordinates, target); return; @@ -66,13 +67,13 @@ namespace Content.Server.Actions.Actions return; } - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var actions)) return; + if (!entMan.TryGetComponent(args.Performer, out var actions)) return; if (args.Target == args.Performer || !EntitySystem.Get().CanAttack(args.Performer)) return; var random = IoCManager.Resolve(); var system = EntitySystem.Get(); - var diff = IoCManager.Resolve().GetComponent(args.Target).MapPosition.Position - IoCManager.Resolve().GetComponent(args.Performer).MapPosition.Position; + var diff = entMan.GetComponent(args.Target).MapPosition.Position - entMan.GetComponent(args.Performer).MapPosition.Position; var angle = Angle.FromWorldVec(diff); actions.Cooldown(ActionType.Disarm, Cooldowns.SecondsFromNow(_cooldown)); @@ -82,10 +83,10 @@ namespace Content.Server.Actions.Actions SoundSystem.Play(Filter.Pvs(args.Performer), PunchMissSound.GetSound(), args.Performer, AudioHelpers.WithVariation(0.025f)); args.Performer.PopupMessageOtherClients(Loc.GetString("disarm-action-popup-message-other-clients", - ("performerName", Name: IoCManager.Resolve().GetComponent(args.Performer).EntityName), - ("targetName", Name: IoCManager.Resolve().GetComponent(args.Target).EntityName))); + ("performerName", Name: entMan.GetComponent(args.Performer).EntityName), + ("targetName", Name: entMan.GetComponent(args.Target).EntityName))); args.Performer.PopupMessageCursor(Loc.GetString("disarm-action-popup-message-cursor", - ("targetName", Name: IoCManager.Resolve().GetComponent(args.Target).EntityName))); + ("targetName", Name: entMan.GetComponent(args.Target).EntityName))); system.SendLunge(angle, args.Performer); return; } @@ -94,7 +95,7 @@ namespace Content.Server.Actions.Actions var eventArgs = new DisarmedActEvent() { Target = args.Target, Source = args.Performer, PushProbability = _pushProb }; - IoCManager.Resolve().EventBus.RaiseLocalEvent(args.Target, eventArgs); + entMan.EventBus.RaiseLocalEvent(args.Target, eventArgs); EntitySystem.Get().Add(LogType.DisarmedAction, LogImpact.Low, $"{args.Performer:performer} used disarm on {args.Target:target}"); @@ -112,7 +113,7 @@ namespace Content.Server.Actions.Actions return; } - SoundSystem.Play(Filter.Pvs(args.Performer), DisarmSuccessSound.GetSound(), IoCManager.Resolve().GetComponent(args.Performer).Coordinates, AudioHelpers.WithVariation(0.025f)); + SoundSystem.Play(Filter.Pvs(args.Performer), DisarmSuccessSound.GetSound(), entMan.GetComponent(args.Performer).Coordinates, AudioHelpers.WithVariation(0.025f)); } } } diff --git a/Content.Server/Actions/Actions/GhostBoo.cs b/Content.Server/Actions/Actions/GhostBoo.cs index 6607b86a20..3a563da8ed 100644 --- a/Content.Server/Actions/Actions/GhostBoo.cs +++ b/Content.Server/Actions/Actions/GhostBoo.cs @@ -23,7 +23,9 @@ namespace Content.Server.Actions.Actions public void DoInstantAction(InstantActionEventArgs args) { - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var actions)) return; + var entMan = IoCManager.Resolve(); + + if (!entMan.TryGetComponent(args.Performer, out var actions)) return; // find all IGhostBooAffected nearby and do boo on them var ents = IoCManager.Resolve().GetEntitiesInRange(args.Performer, _radius); @@ -32,7 +34,7 @@ namespace Content.Server.Actions.Actions foreach (var ent in ents) { var ghostBoo = new GhostBooEvent(); - IoCManager.Resolve().EventBus.RaiseLocalEvent(ent, ghostBoo); + entMan.EventBus.RaiseLocalEvent(ent, ghostBoo); if (ghostBoo.Handled) booCounter++; diff --git a/Content.Server/Actions/Actions/PAIMidi.cs b/Content.Server/Actions/Actions/PAIMidi.cs index 3c4e58ffac..942633e920 100644 --- a/Content.Server/Actions/Actions/PAIMidi.cs +++ b/Content.Server/Actions/Actions/PAIMidi.cs @@ -23,8 +23,10 @@ namespace Content.Server.Actions.Actions public void DoInstantAction(InstantActionEventArgs args) { - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var serverUi)) return; - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var actor)) return; + var entMan = IoCManager.Resolve(); + + if (!entMan.TryGetComponent(args.Performer, out var serverUi)) return; + if (!entMan.TryGetComponent(args.Performer, out var actor)) return; if (!serverUi.TryGetBoundUserInterface(InstrumentUiKey.Key,out var bui)) return; bui.Toggle(actor.PlayerSession); diff --git a/Content.Server/Actions/Actions/ScreamAction.cs b/Content.Server/Actions/Actions/ScreamAction.cs index 73289cd0ff..28a20be608 100644 --- a/Content.Server/Actions/Actions/ScreamAction.cs +++ b/Content.Server/Actions/Actions/ScreamAction.cs @@ -26,6 +26,7 @@ namespace Content.Server.Actions.Actions private const float Volume = 4f; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IEntityManager _entMan = default!; [DataField("male", required: true)] private SoundSpecifier _male = default!; [DataField("female", required: true)] private SoundSpecifier _female = default!; @@ -42,8 +43,8 @@ namespace Content.Server.Actions.Actions public void DoInstantAction(InstantActionEventArgs args) { if (!EntitySystem.Get().CanSpeak(args.Performer)) return; - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var humanoid)) return; - if (!IoCManager.Resolve().TryGetComponent(args.Performer, out var actions)) return; + if (!_entMan.TryGetComponent(args.Performer, out var humanoid)) return; + if (!_entMan.TryGetComponent(args.Performer, out var actions)) return; if (_random.Prob(.01f)) { diff --git a/Content.Server/Actions/Spells/GiveItemSpell.cs b/Content.Server/Actions/Spells/GiveItemSpell.cs index e1c4f9323a..2eec52ec14 100644 --- a/Content.Server/Actions/Spells/GiveItemSpell.cs +++ b/Content.Server/Actions/Spells/GiveItemSpell.cs @@ -34,9 +34,11 @@ namespace Content.Server.Actions.Spells public void DoInstantAction(InstantActionEventArgs args) { + var entMan = IoCManager.Resolve(); + var caster = args.Performer; - if (!IoCManager.Resolve().TryGetComponent(caster, out HandsComponent? handsComponent)) + if (!entMan.TryGetComponent(caster, out HandsComponent? handsComponent)) { caster.PopupMessage(Loc.GetString("spell-fail-no-hands")); return; @@ -52,12 +54,12 @@ namespace Content.Server.Actions.Spells } // TODO: Look this is shitty and ideally a test would do it - var spawnedProto = IoCManager.Resolve().SpawnEntity(ItemProto, IoCManager.Resolve().GetComponent(caster).MapPosition); + var spawnedProto = entMan.SpawnEntity(ItemProto, entMan.GetComponent(caster).MapPosition); - if (!IoCManager.Resolve().TryGetComponent(spawnedProto, out ItemComponent? itemComponent)) + if (!entMan.TryGetComponent(spawnedProto, out ItemComponent? itemComponent)) { Logger.Error($"Tried to use {nameof(GiveItemSpell)} but prototype has no {nameof(ItemComponent)}?"); - IoCManager.Resolve().DeleteEntity(spawnedProto); + entMan.DeleteEntity(spawnedProto); return; } diff --git a/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs b/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs index 18ca44536c..a2324d3810 100644 --- a/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs +++ b/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs @@ -42,7 +42,7 @@ namespace Content.Server.Administration.Commands var count = 0; foreach (var entity in entitiesWithAllComponents) { - IoCManager.Resolve().DeleteEntity(entity); + entityManager.DeleteEntity(entity); count += 1; } diff --git a/Content.Server/Administration/Commands/DeleteEntitiesWithId.cs b/Content.Server/Administration/Commands/DeleteEntitiesWithId.cs index 56c2d1b4ee..def77308ed 100644 --- a/Content.Server/Administration/Commands/DeleteEntitiesWithId.cs +++ b/Content.Server/Administration/Commands/DeleteEntitiesWithId.cs @@ -23,12 +23,12 @@ namespace Content.Server.Administration.Commands var id = args[0].ToLower(); var entityManager = IoCManager.Resolve(); - var entities = entityManager.GetEntities().Where(e => IoCManager.Resolve().GetComponent(e).EntityPrototype?.ID.ToLower() == id); + var entities = entityManager.GetEntities().Where(e => entityManager.GetComponent(e).EntityPrototype?.ID.ToLower() == id); var i = 0; foreach (var entity in entities) { - IoCManager.Resolve().DeleteEntity(entity); + entityManager.DeleteEntity(entity); i++; } diff --git a/Content.Server/Administration/Commands/DeleteEntityCommand.cs b/Content.Server/Administration/Commands/DeleteEntityCommand.cs index 5a35db8c2b..1d8aa288ac 100644 --- a/Content.Server/Administration/Commands/DeleteEntityCommand.cs +++ b/Content.Server/Administration/Commands/DeleteEntityCommand.cs @@ -34,7 +34,7 @@ namespace Content.Server.Administration.Commands return; } - IoCManager.Resolve().DeleteEntity(id); + entityManager.DeleteEntity(id); shell.WriteLine($"Deleted entity with id {id}."); } } diff --git a/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs b/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs index e4690b7ee3..ab5b1e8a9e 100644 --- a/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs +++ b/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs @@ -223,7 +223,7 @@ namespace Content.Server.Arcade.Components public void ProcessWin() { var entityManager = IoCManager.Resolve(); - entityManager.SpawnEntity(_random.Pick(_possibleRewards), IoCManager.Resolve().GetComponent(Owner).MapPosition); + entityManager.SpawnEntity(_random.Pick(_possibleRewards), entityManager.GetComponent(Owner).MapPosition); } /// diff --git a/Content.Server/Atmos/Commands/DeleteGasCommand.cs b/Content.Server/Atmos/Commands/DeleteGasCommand.cs index b3f879dd6d..0e1adc1e6f 100644 --- a/Content.Server/Atmos/Commands/DeleteGasCommand.cs +++ b/Content.Server/Atmos/Commands/DeleteGasCommand.cs @@ -24,6 +24,8 @@ namespace Content.Server.Atmos.Commands GridId gridId; Gas? gas = null; + var entMan = IoCManager.Resolve(); + switch (args.Length) { case 0: @@ -40,7 +42,7 @@ namespace Content.Server.Atmos.Commands return; } - gridId = IoCManager.Resolve().GetComponent(playerEntity).GridID; + gridId = entMan.GetComponent(playerEntity).GridID; if (gridId == GridId.Invalid) { @@ -67,7 +69,7 @@ namespace Content.Server.Atmos.Commands return; } - gridId = IoCManager.Resolve().GetComponent(playerEntity).GridID; + gridId = entMan.GetComponent(playerEntity).GridID; if (gridId == GridId.Invalid) { diff --git a/Content.Server/Atmos/Components/AtmosPlaqueComponent.cs b/Content.Server/Atmos/Components/AtmosPlaqueComponent.cs index d724d7cb47..087ff837a6 100644 --- a/Content.Server/Atmos/Components/AtmosPlaqueComponent.cs +++ b/Content.Server/Atmos/Components/AtmosPlaqueComponent.cs @@ -10,6 +10,8 @@ namespace Content.Server.Atmos.Components [RegisterComponent] public sealed class AtmosPlaqueComponent : Component, IMapInit { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "AtmosPlaque"; [DataField("plaqueType")] @@ -55,6 +57,8 @@ namespace Content.Server.Atmos.Components return; } + var metaData = _entMan.GetComponent(Owner); + var val = _type switch { PlaqueType.Zumos => @@ -68,7 +72,8 @@ namespace Content.Server.Atmos.Components PlaqueType.Unset => "Uhm", _ => "Uhm", }; - IoCManager.Resolve().GetComponent(Owner).EntityDescription = val; + + metaData.EntityDescription = val; var val1 = _type switch { @@ -83,9 +88,10 @@ namespace Content.Server.Atmos.Components PlaqueType.Unset => "Uhm", _ => "Uhm", }; - IoCManager.Resolve().GetComponent(Owner).EntityName = val1; - if (IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance)) + metaData.EntityName = val1; + + if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance)) { var state = _type == PlaqueType.Zumos ? "zumosplaque" : "atmosplaque"; diff --git a/Content.Server/Atmos/Components/GasTankComponent.cs b/Content.Server/Atmos/Components/GasTankComponent.cs index ca5fca1754..7f5a81fa2b 100644 --- a/Content.Server/Atmos/Components/GasTankComponent.cs +++ b/Content.Server/Atmos/Components/GasTankComponent.cs @@ -34,6 +34,8 @@ namespace Content.Server.Atmos.Components public class GasTankComponent : Component, IExamine, IGasMixtureHolder, IUse, IDropped, IActivate #pragma warning restore 618 { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "GasTank"; private const float MaxExplosionRange = 14f; @@ -155,14 +157,14 @@ namespace Content.Server.Atmos.Components bool IUse.UseEntity(UseEntityEventArgs eventArgs) { - if (!IoCManager.Resolve().TryGetComponent(eventArgs.User, out ActorComponent? actor)) return false; + if (!_entMan.TryGetComponent(eventArgs.User, out ActorComponent? actor)) return false; OpenInterface(actor.PlayerSession); return true; } void IActivate.Activate(ActivateEventArgs eventArgs) { - if (!IoCManager.Resolve().TryGetComponent(eventArgs.User, out ActorComponent? actor)) return; + if (!_entMan.TryGetComponent(eventArgs.User, out ActorComponent? actor)) return; OpenInterface(actor.PlayerSession); } @@ -230,10 +232,10 @@ namespace Content.Server.Atmos.Components private InternalsComponent? GetInternalsComponent(EntityUid? owner = null) { - if ((!IoCManager.Resolve().EntityExists(Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) return null; - if (owner != null) return IoCManager.Resolve().GetComponentOrNull(owner.Value); + if ((!_entMan.EntityExists(Owner) ? EntityLifeStage.Deleted : _entMan.GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) return null; + if (owner != null) return _entMan.GetComponentOrNull(owner.Value); return Owner.TryGetContainer(out var container) - ? IoCManager.Resolve().GetComponentOrNull(container.Owner) + ? _entMan.GetComponentOrNull(container.Owner) : null; } @@ -271,7 +273,7 @@ namespace Content.Server.Atmos.Components EntitySystem.Get().SpawnExplosion(Owner, (int) (range * 0.25f), (int) (range * 0.5f), (int) (range * 1.5f), 1); - IoCManager.Resolve().QueueDeleteEntity(Owner); + _entMan.QueueDeleteEntity(Owner); return; } @@ -279,13 +281,13 @@ namespace Content.Server.Atmos.Components { if (_integrity <= 0) { - var environment = atmosphereSystem.GetTileMixture(IoCManager.Resolve().GetComponent(Owner).Coordinates, true); + var environment = atmosphereSystem.GetTileMixture(_entMan.GetComponent(Owner).Coordinates, true); if(environment != null) atmosphereSystem.Merge(environment, Air); - SoundSystem.Play(Filter.Pvs(Owner), _ruptureSound.GetSound(), IoCManager.Resolve().GetComponent(Owner).Coordinates, AudioHelpers.WithVariation(0.125f)); + SoundSystem.Play(Filter.Pvs(Owner), _ruptureSound.GetSound(), _entMan.GetComponent(Owner).Coordinates, AudioHelpers.WithVariation(0.125f)); - IoCManager.Resolve().QueueDeleteEntity(Owner); + _entMan.QueueDeleteEntity(Owner); return; } @@ -297,7 +299,7 @@ namespace Content.Server.Atmos.Components { if (_integrity <= 0) { - var environment = atmosphereSystem.GetTileMixture(IoCManager.Resolve().GetComponent(Owner).Coordinates, true); + var environment = atmosphereSystem.GetTileMixture(_entMan.GetComponent(Owner).Coordinates, true); if (environment == null) return; diff --git a/Content.Server/Atmos/Components/MovedByPressureComponent.cs b/Content.Server/Atmos/Components/MovedByPressureComponent.cs index 174e60f0a3..e1b3e347f9 100644 --- a/Content.Server/Atmos/Components/MovedByPressureComponent.cs +++ b/Content.Server/Atmos/Components/MovedByPressureComponent.cs @@ -18,6 +18,7 @@ namespace Content.Server.Atmos.Components public class MovedByPressureComponent : Component { [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly IEntityManager _entMan = default!; public override string Name => "MovedByPressure"; @@ -42,12 +43,12 @@ namespace Content.Server.Atmos.Components public void ExperiencePressureDifference(int cycle, float pressureDifference, AtmosDirection direction, float pressureResistanceProbDelta, EntityCoordinates throwTarget) { - if (!IoCManager.Resolve().TryGetComponent(Owner, out PhysicsComponent? physics)) + if (!_entMan.TryGetComponent(Owner, out PhysicsComponent? physics)) return; // TODO ATMOS stuns? - var transform = IoCManager.Resolve().GetComponent(physics.Owner); + var transform = _entMan.GetComponent(physics.Owner); var maxForce = MathF.Sqrt(pressureDifference) * 2.25f; var moveProb = 100f; @@ -61,7 +62,7 @@ namespace Content.Server.Atmos.Components && (maxForce >= (MoveResist * MoveForcePushRatio))) || (physics.BodyType == BodyType.Static && (maxForce >= (MoveResist * MoveForceForcePushRatio)))) { - if (IoCManager.Resolve().HasComponent(physics.Owner)) + if (_entMan.HasComponent(physics.Owner)) { physics.BodyStatus = BodyStatus.InAir; @@ -72,10 +73,10 @@ namespace Content.Server.Atmos.Components Owner.SpawnTimer(2000, () => { - if (Deleted || !IoCManager.Resolve().TryGetComponent(Owner, out PhysicsComponent? physicsComponent)) return; + if (Deleted || !_entMan.TryGetComponent(Owner, out PhysicsComponent? physicsComponent)) return; // Uhh if you get race conditions good luck buddy. - if (IoCManager.Resolve().HasComponent(physicsComponent.Owner)) + if (_entMan.HasComponent(physicsComponent.Owner)) { physicsComponent.BodyStatus = BodyStatus.OnGround; } @@ -118,7 +119,7 @@ namespace Content.Server.Atmos.Components public static bool IsMovedByPressure(this EntityUid entity, [NotNullWhen(true)] out MovedByPressureComponent? moved) { - return IoCManager.Resolve().TryGetComponent(entity, out moved) && + return _entMan.TryGetComponent(entity, out moved) && moved.Enabled; } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 9628303ffd..a0841e0b3d 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -134,17 +134,19 @@ namespace Content.Server.Atmos.EntitySystems if (session.AttachedEntity is not {Valid: true} entity) continue; - var worldBounds = Box2.CenteredAround(IoCManager.Resolve().GetComponent(entity).WorldPosition, + var transform = EntityManager.GetComponent(entity); + + var worldBounds = Box2.CenteredAround(transform.WorldPosition, new Vector2(LocalViewRange, LocalViewRange)); - foreach (var grid in _mapManager.FindGridsIntersecting(IoCManager.Resolve().GetComponent(entity).MapID, worldBounds)) + foreach (var grid in _mapManager.FindGridsIntersecting(transform.MapID, worldBounds)) { if (!EntityManager.EntityExists(grid.GridEntityId)) continue; - if (!IoCManager.Resolve().TryGetComponent(grid.GridEntityId, out var gam)) continue; + if (!EntityManager.TryGetComponent(grid.GridEntityId, out var gam)) continue; - var entityTile = grid.GetTileRef(IoCManager.Resolve().GetComponent(entity).Coordinates).GridIndices; + var entityTile = grid.GetTileRef(transform.Coordinates).GridIndices; var baseTile = new Vector2i(entityTile.X - (LocalViewRange / 2), entityTile.Y - (LocalViewRange / 2)); var debugOverlayContent = new AtmosDebugOverlayData[LocalViewRange * LocalViewRange]; diff --git a/Content.Server/Body/Components/BodyComponent.cs b/Content.Server/Body/Components/BodyComponent.cs index f7c0df0e9e..9fe11422a0 100644 --- a/Content.Server/Body/Components/BodyComponent.cs +++ b/Content.Server/Body/Components/BodyComponent.cs @@ -19,6 +19,8 @@ namespace Content.Server.Body.Components [ComponentReference(typeof(IGhostOnMove))] public class BodyComponent : SharedBodyComponent, IGhostOnMove { + [Dependency] private readonly IEntityManager _entMan = default!; + private Container _partContainer = default!; [DataField("gibSound")] private SoundSpecifier _gibSound = new SoundCollectionSpecifier("gib"); @@ -57,9 +59,9 @@ namespace Content.Server.Body.Components { // Using MapPosition instead of Coordinates here prevents // a crash within the character preview menu in the lobby - var entity = IoCManager.Resolve().SpawnEntity(preset.PartIDs[slot.Id], IoCManager.Resolve().GetComponent(Owner).MapPosition); + var entity = _entMan.SpawnEntity(preset.PartIDs[slot.Id], _entMan.GetComponent(Owner).MapPosition); - if (!IoCManager.Resolve().TryGetComponent(entity, out SharedBodyPartComponent? part)) + if (!_entMan.TryGetComponent(entity, out SharedBodyPartComponent? part)) { Logger.Error($"Entity {slot.Id} does not have a {nameof(SharedBodyPartComponent)} component."); continue; @@ -87,22 +89,22 @@ namespace Content.Server.Body.Components { base.Gib(gibParts); - SoundSystem.Play(Filter.Pvs(Owner), _gibSound.GetSound(), IoCManager.Resolve().GetComponent(Owner).Coordinates, AudioHelpers.WithVariation(0.025f)); + SoundSystem.Play(Filter.Pvs(Owner), _gibSound.GetSound(), _entMan.GetComponent(Owner).Coordinates, AudioHelpers.WithVariation(0.025f)); - if (IoCManager.Resolve().TryGetComponent(Owner, out ContainerManagerComponent? container)) + if (_entMan.TryGetComponent(Owner, out ContainerManagerComponent? container)) { foreach (var cont in container.GetAllContainers()) { foreach (var ent in cont.ContainedEntities) { cont.ForceRemove(ent); - IoCManager.Resolve().GetComponent(ent).Coordinates = IoCManager.Resolve().GetComponent(Owner).Coordinates; + _entMan.GetComponent(ent).Coordinates = _entMan.GetComponent(Owner).Coordinates; ent.RandomOffset(0.25f); } } } - IoCManager.Resolve().QueueDeleteEntity(Owner); + _entMan.QueueDeleteEntity(Owner); } } } diff --git a/Content.Server/Body/Components/BodyPartComponent.cs b/Content.Server/Body/Components/BodyPartComponent.cs index eb586b4a2c..6cb19ec14f 100644 --- a/Content.Server/Body/Components/BodyPartComponent.cs +++ b/Content.Server/Body/Components/BodyPartComponent.cs @@ -21,6 +21,8 @@ namespace Content.Server.Body.Components [ComponentReference(typeof(SharedBodyPartComponent))] public class BodyPartComponent : SharedBodyPartComponent, IAfterInteract { + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly Dictionary _optionsCache = new(); private SharedBodyComponent? _owningBodyCache; private int _idHash; @@ -61,9 +63,9 @@ namespace Content.Server.Body.Components // identical on it foreach (var mechanismId in MechanismIds) { - var entity = IoCManager.Resolve().SpawnEntity(mechanismId, IoCManager.Resolve().GetComponent(Owner).MapPosition); + var entity = _entMan.SpawnEntity(mechanismId, _entMan.GetComponent(Owner).MapPosition); - if (!IoCManager.Resolve().TryGetComponent(entity, out SharedMechanismComponent? mechanism)) + if (!_entMan.TryGetComponent(entity, out SharedMechanismComponent? mechanism)) { Logger.Error($"Entity {mechanismId} does not have a {nameof(SharedMechanismComponent)} component."); continue; @@ -101,7 +103,7 @@ namespace Content.Server.Body.Components _surgeonCache = null; _owningBodyCache = null; - if (IoCManager.Resolve().TryGetComponent(eventArgs.Target.Value, out SharedBodyComponent? body)) + if (_entMan.TryGetComponent(eventArgs.Target.Value, out SharedBodyComponent? body)) { SendSlots(eventArgs, body); } @@ -138,8 +140,8 @@ namespace Content.Server.Body.Components if (_optionsCache.Count > 0) { - OpenSurgeryUI(IoCManager.Resolve().GetComponent(eventArgs.User).PlayerSession); - BodyPartSlotRequest(IoCManager.Resolve().GetComponent(eventArgs.User).PlayerSession, + OpenSurgeryUI(_entMan.GetComponent(eventArgs.User).PlayerSession); + BodyPartSlotRequest(_entMan.GetComponent(eventArgs.User).PlayerSession, toSend); _surgeonCache = eventArgs.User; _owningBodyCache = body; @@ -158,7 +160,7 @@ namespace Content.Server.Body.Components private void ReceiveBodyPartSlot(int key) { if (_surgeonCache == null || - !IoCManager.Resolve().TryGetComponent(_surgeonCache.Value, out ActorComponent? actor)) + !_entMan.TryGetComponent(_surgeonCache.Value, out ActorComponent? actor)) { return; } diff --git a/Content.Server/Body/Components/BodyScannerComponent.cs b/Content.Server/Body/Components/BodyScannerComponent.cs index e62d21befa..a9045bcf11 100644 --- a/Content.Server/Body/Components/BodyScannerComponent.cs +++ b/Content.Server/Body/Components/BodyScannerComponent.cs @@ -13,11 +13,13 @@ namespace Content.Server.Body.Components [ComponentReference(typeof(SharedBodyScannerComponent))] public class BodyScannerComponent : SharedBodyScannerComponent, IActivate { + [Dependency] private readonly IEntityManager _entMan = default!; + [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(BodyScannerUiKey.Key); void IActivate.Activate(ActivateEventArgs eventArgs) { - if (!IoCManager.Resolve().TryGetComponent(eventArgs.User, out ActorComponent? actor)) + if (!_entMan.TryGetComponent(eventArgs.User, out ActorComponent? actor)) { return; } @@ -29,7 +31,7 @@ namespace Content.Server.Body.Components return; } - if (IoCManager.Resolve().TryGetComponent(session.AttachedEntity, out SharedBodyComponent? body)) + if (_entMan.TryGetComponent(session.AttachedEntity, out SharedBodyComponent? body)) { var state = InterfaceState(body); UserInterface?.SetState(state); diff --git a/Content.Server/Body/Components/InternalsComponent.cs b/Content.Server/Body/Components/InternalsComponent.cs index 3b849e158f..f2214e9fb9 100644 --- a/Content.Server/Body/Components/InternalsComponent.cs +++ b/Content.Server/Body/Components/InternalsComponent.cs @@ -8,6 +8,8 @@ namespace Content.Server.Body.Components [RegisterComponent] public class InternalsComponent : Component { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "Internals"; [ViewVariables] public EntityUid GasTankEntity { get; set; } [ViewVariables] public EntityUid BreathToolEntity { get; set; } @@ -17,7 +19,7 @@ namespace Content.Server.Body.Components var old = BreathToolEntity; BreathToolEntity = default; - if (old != default && IoCManager.Resolve().TryGetComponent(old, out BreathToolComponent? breathTool) ) + if (old != default && _entMan.TryGetComponent(old, out BreathToolComponent? breathTool) ) { breathTool.DisconnectInternals(); DisconnectTank(); @@ -26,7 +28,7 @@ namespace Content.Server.Body.Components public void ConnectBreathTool(EntityUid toolEntity) { - if (BreathToolEntity != default && IoCManager.Resolve().TryGetComponent(BreathToolEntity, out BreathToolComponent? tool)) + if (BreathToolEntity != default && _entMan.TryGetComponent(BreathToolEntity, out BreathToolComponent? tool)) { tool.DisconnectInternals(); } @@ -36,7 +38,7 @@ namespace Content.Server.Body.Components public void DisconnectTank() { - if (GasTankEntity != default && IoCManager.Resolve().TryGetComponent(GasTankEntity, out GasTankComponent? tank)) + if (GasTankEntity != default && _entMan.TryGetComponent(GasTankEntity, out GasTankComponent? tank)) { tank.DisconnectFromInternals(Owner); } @@ -49,7 +51,7 @@ namespace Content.Server.Body.Components if (BreathToolEntity == default) return false; - if (GasTankEntity != default && IoCManager.Resolve().TryGetComponent(GasTankEntity, out GasTankComponent? tank)) + if (GasTankEntity != default && _entMan.TryGetComponent(GasTankEntity, out GasTankComponent? tank)) { tank.DisconnectFromInternals(Owner); } @@ -62,9 +64,9 @@ namespace Content.Server.Body.Components { return BreathToolEntity != default && GasTankEntity != default && - IoCManager.Resolve().TryGetComponent(BreathToolEntity, out BreathToolComponent? breathTool) && + _entMan.TryGetComponent(BreathToolEntity, out BreathToolComponent? breathTool) && breathTool.IsFunctional && - IoCManager.Resolve().TryGetComponent(GasTankEntity, out GasTankComponent? gasTank) && + _entMan.TryGetComponent(GasTankEntity, out GasTankComponent? gasTank) && gasTank.Air != default; } diff --git a/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs b/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs index 2a233b7d40..1feb8d04be 100644 --- a/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs +++ b/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs @@ -21,6 +21,8 @@ namespace Content.Server.Body.Surgery [ComponentReference(typeof(ISurgeryData))] public class BiologicalSurgeryDataComponent : Component, ISurgeryData { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "BiologicalSurgeryData"; private readonly HashSet _disconnectedOrgans = new(); @@ -31,7 +33,7 @@ namespace Content.Server.Body.Surgery private bool VesselsClamped { get; set; } - public SharedBodyPartComponent? Parent => IoCManager.Resolve().GetComponentOrNull(Owner); + public SharedBodyPartComponent? Parent => _entMan.GetComponentOrNull(Owner); public BodyPartType? ParentType => Parent?.PartType; @@ -53,7 +55,7 @@ namespace Content.Server.Body.Surgery private async Task SurgeryDoAfter(EntityUid performer) { - if (!IoCManager.Resolve().HasComponent(performer)) + if (!_entMan.HasComponent(performer)) { return true; } @@ -299,7 +301,7 @@ namespace Content.Server.Body.Surgery performer.PopupMessage(Loc.GetString("biological-surgery-data-component-loosen-organ-message")); - if (!IoCManager.Resolve().HasComponent(performer)) + if (!_entMan.HasComponent(performer)) { AddDisconnectedOrgan(target); return; @@ -340,16 +342,16 @@ namespace Content.Server.Body.Surgery performer.PopupMessage(Loc.GetString("biological-surgery-data-component-remove-organ-message")); - if (!IoCManager.Resolve().HasComponent(performer)) + if (!_entMan.HasComponent(performer)) { - Parent.RemoveMechanism(target, IoCManager.Resolve().GetComponent(performer).Coordinates); + Parent.RemoveMechanism(target, _entMan.GetComponent(performer).Coordinates); RemoveDisconnectedOrgan(target); return; } if (await SurgeryDoAfter(performer)) { - Parent.RemoveMechanism(target, IoCManager.Resolve().GetComponent(performer).Coordinates); + Parent.RemoveMechanism(target, _entMan.GetComponent(performer).Coordinates); RemoveDisconnectedOrgan(target); } } diff --git a/Content.Server/Botany/Components/LogComponent.cs b/Content.Server/Botany/Components/LogComponent.cs index 9384d28f55..5b49e35719 100644 --- a/Content.Server/Botany/Components/LogComponent.cs +++ b/Content.Server/Botany/Components/LogComponent.cs @@ -18,15 +18,17 @@ namespace Content.Server.Botany.Components if (!EntitySystem.Get().CanInteract(eventArgs.User)) return false; + var entMan = IoCManager.Resolve(); + if (eventArgs.Using.HasTag("BotanySharp")) { for (var i = 0; i < 2; i++) { - var plank = IoCManager.Resolve().SpawnEntity("MaterialWoodPlank1", IoCManager.Resolve().GetComponent(Owner).Coordinates); + var plank = entMan.SpawnEntity("MaterialWoodPlank1", entMan.GetComponent(Owner).Coordinates); plank.RandomOffset(0.25f); } - IoCManager.Resolve().QueueDeleteEntity(Owner); + entMan.QueueDeleteEntity(Owner); return true; } diff --git a/Content.Server/Botany/Components/PlantHolderComponent.cs b/Content.Server/Botany/Components/PlantHolderComponent.cs index b6f42ac23f..c4bfd821c5 100644 --- a/Content.Server/Botany/Components/PlantHolderComponent.cs +++ b/Content.Server/Botany/Components/PlantHolderComponent.cs @@ -44,6 +44,7 @@ namespace Content.Server.Botany.Components [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly IEntityManager _entMan = default!; [ComponentDependency] private readonly AppearanceComponent? _appearanceComponent = default!; public override string Name => "PlantHolder"; @@ -247,7 +248,7 @@ namespace Content.Server.Botany.Components _updateSpriteAfterUpdate = true; } - var environment = EntitySystem.Get().GetTileMixture(IoCManager.Resolve().GetComponent(Owner).Coordinates, true) ?? + var environment = EntitySystem.Get().GetTileMixture(_entMan.GetComponent(Owner).Coordinates, true) ?? GasMixture.SpaceGas; if (Seed.ConsumeGasses.Count > 0) @@ -360,7 +361,7 @@ namespace Content.Server.Botany.Components } else if (Age < 0) // Revert back to seed packet! { - Seed.SpawnSeedPacket(IoCManager.Resolve().GetComponent(Owner).Coordinates); + Seed.SpawnSeedPacket(_entMan.GetComponent(Owner).Coordinates); RemovePlant(); ForceUpdate = true; Update(); @@ -420,12 +421,12 @@ namespace Content.Server.Botany.Components public bool DoHarvest(EntityUid user) { - if (Seed == null || (!IoCManager.Resolve().EntityExists(user) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(user).EntityLifeStage) >= EntityLifeStage.Deleted || !EntitySystem.Get().CanInteract(user)) + if (Seed == null || (!_entMan.EntityExists(user) ? EntityLifeStage.Deleted : _entMan.GetComponent(user).EntityLifeStage) >= EntityLifeStage.Deleted || !EntitySystem.Get().CanInteract(user)) return false; if (Harvest && !Dead) { - if (IoCManager.Resolve().TryGetComponent(user, out HandsComponent? hands)) + if (_entMan.TryGetComponent(user, out HandsComponent? hands)) { if (!Seed.CheckHarvest(user, hands.GetActiveHand?.Owner)) return false; @@ -452,7 +453,7 @@ namespace Content.Server.Botany.Components if (Seed == null || !Harvest) return; - Seed.AutoHarvest(IoCManager.Resolve().GetComponent(Owner).Coordinates); + Seed.AutoHarvest(_entMan.GetComponent(Owner).Coordinates); AfterHarvest(); } @@ -650,17 +651,17 @@ namespace Content.Server.Botany.Components var user = eventArgs.User; var usingItem = eventArgs.Using; - if ((!IoCManager.Resolve().EntityExists(usingItem) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(usingItem).EntityLifeStage) >= EntityLifeStage.Deleted || !EntitySystem.Get().CanInteract(user)) + if ((!_entMan.EntityExists(usingItem) ? EntityLifeStage.Deleted : _entMan.GetComponent(usingItem).EntityLifeStage) >= EntityLifeStage.Deleted || !EntitySystem.Get().CanInteract(user)) return false; - if (IoCManager.Resolve().TryGetComponent(usingItem, out SeedComponent? seeds)) + if (_entMan.TryGetComponent(usingItem, out SeedComponent? seeds)) { if (Seed == null) { if (seeds.Seed == null) { user.PopupMessageCursor(Loc.GetString("plant-holder-component-empty-seed-packet-message")); - IoCManager.Resolve().QueueDeleteEntity(usingItem); + _entMan.QueueDeleteEntity(usingItem); return false; } @@ -674,7 +675,7 @@ namespace Content.Server.Botany.Components Health = Seed.Endurance; _lastCycle = _gameTiming.CurTime; - IoCManager.Resolve().QueueDeleteEntity(usingItem); + _entMan.QueueDeleteEntity(usingItem); CheckLevelSanity(); UpdateSprite(); @@ -683,7 +684,7 @@ namespace Content.Server.Botany.Components } user.PopupMessageCursor(Loc.GetString("plant-holder-component-already-seeded-message", - ("name", Name: IoCManager.Resolve().GetComponent(Owner).EntityName))); + ("name", Name: _entMan.GetComponent(Owner).EntityName))); return false; } @@ -692,9 +693,9 @@ namespace Content.Server.Botany.Components if (WeedLevel > 0) { user.PopupMessageCursor(Loc.GetString("plant-holder-component-remove-weeds-message", - ("name", Name: IoCManager.Resolve().GetComponent(Owner).EntityName))); + ("name", Name: _entMan.GetComponent(Owner).EntityName))); user.PopupMessageOtherClients(Loc.GetString("plant-holder-component-remove-weeds-others-message", - ("otherName", Name: IoCManager.Resolve().GetComponent(user).EntityName))); + ("otherName", Name: _entMan.GetComponent(user).EntityName))); WeedLevel = 0; UpdateSprite(); } @@ -711,9 +712,9 @@ namespace Content.Server.Botany.Components if (Seed != null) { user.PopupMessageCursor(Loc.GetString("plant-holder-component-remove-plant-message", - ("name", Name: IoCManager.Resolve().GetComponent(Owner).EntityName))); + ("name", Name: _entMan.GetComponent(Owner).EntityName))); user.PopupMessageOtherClients(Loc.GetString("plant-holder-component-remove-plant-others-message", - ("name", Name: IoCManager.Resolve().GetComponent(user).EntityName))); + ("name", Name: _entMan.GetComponent(user).EntityName))); RemovePlant(); } else @@ -733,7 +734,7 @@ namespace Content.Server.Botany.Components var targetEntity = Owner; var solutionEntity = usingItem; - if (IoCManager.Resolve().TryGetComponent(usingItem, out SprayComponent? spray)) + if (_entMan.TryGetComponent(usingItem, out SprayComponent? spray)) { sprayed = true; amount = FixedPoint2.New(1); @@ -782,7 +783,7 @@ namespace Content.Server.Botany.Components return false; } - var seed = Seed.SpawnSeedPacket(IoCManager.Resolve().GetComponent(user).Coordinates); + var seed = Seed.SpawnSeedPacket(_entMan.GetComponent(user).Coordinates); seed.RandomOffset(0.25f); user.PopupMessageCursor(Loc.GetString("plant-holder-component-take-sample-message", ("seedName", Seed.DisplayName))); @@ -803,7 +804,7 @@ namespace Content.Server.Botany.Components return DoHarvest(user); } - if (IoCManager.Resolve().TryGetComponent(usingItem, out var produce)) + if (_entMan.TryGetComponent(usingItem, out var produce)) { user.PopupMessageCursor(Loc.GetString("plant-holder-component-compost-message", ("owner", Owner), @@ -822,7 +823,7 @@ namespace Content.Server.Botany.Components ForceUpdateByExternalCause(); } - IoCManager.Resolve().QueueDeleteEntity(usingItem); + _entMan.QueueDeleteEntity(usingItem); return true; } diff --git a/Content.Server/Botany/Components/SeedExtractorComponent.cs b/Content.Server/Botany/Components/SeedExtractorComponent.cs index 5476bfcae5..c2a95b37ce 100644 --- a/Content.Server/Botany/Components/SeedExtractorComponent.cs +++ b/Content.Server/Botany/Components/SeedExtractorComponent.cs @@ -14,6 +14,7 @@ namespace Content.Server.Botany.Components { [ComponentDependency] private readonly ApcPowerReceiverComponent? _powerReceiver = default!; + [Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly IRobustRandom _random = default!; public override string Name => "SeedExtractor"; @@ -27,17 +28,17 @@ namespace Content.Server.Botany.Components if (!_powerReceiver?.Powered ?? false) return false; - if (IoCManager.Resolve().TryGetComponent(eventArgs.Using, out ProduceComponent? produce) && produce.Seed != null) + if (_entMan.TryGetComponent(eventArgs.Using, out ProduceComponent? produce) && produce.Seed != null) { - eventArgs.User.PopupMessageCursor(Loc.GetString("seed-extractor-component-interact-message",("name", Name: IoCManager.Resolve().GetComponent(eventArgs.Using).EntityName))); + eventArgs.User.PopupMessageCursor(Loc.GetString("seed-extractor-component-interact-message",("name", Name: _entMan.GetComponent(eventArgs.Using).EntityName))); - IoCManager.Resolve().QueueDeleteEntity(eventArgs.Using); + _entMan.QueueDeleteEntity(eventArgs.Using); var random = _random.Next(_minSeeds, _maxSeeds); for (var i = 0; i < random; i++) { - produce.Seed.SpawnSeedPacket(IoCManager.Resolve().GetComponent(Owner).Coordinates, IoCManager.Resolve()); + produce.Seed.SpawnSeedPacket(_entMan.GetComponent(Owner).Coordinates, _entMan); } return true; diff --git a/Content.Server/Botany/Seed.cs b/Content.Server/Botany/Seed.cs index a9648df2a2..c9123aac14 100644 --- a/Content.Server/Botany/Seed.cs +++ b/Content.Server/Botany/Seed.cs @@ -257,14 +257,14 @@ namespace Content.Server.Botany var seedComp = seed.EnsureComponent(); seedComp.Seed = this; - if (IoCManager.Resolve().TryGetComponent(seed, out SpriteComponent? sprite)) + if (entityManager.TryGetComponent(seed, out SpriteComponent? sprite)) { // Seed state will always be seed. Blame the spriter if that's not the case! sprite.LayerSetSprite(0, new SpriteSpecifier.Rsi(PlantRsi, "seed")); } string val = Loc.GetString("botany-seed-packet-name", ("seedName", SeedName), ("seedNoun", SeedNoun)); - IoCManager.Resolve().GetComponent(seed).EntityName = val; + entityManager.GetComponent(seed).EntityName = val; return seed; } @@ -342,10 +342,9 @@ namespace Content.Server.Botany if (Mysterious) { - string val1 = IoCManager.Resolve().GetComponent(entity).EntityName + "?"; - IoCManager.Resolve().GetComponent(entity).EntityName = val1; - string val = IoCManager.Resolve().GetComponent(entity).EntityDescription + (" " + Loc.GetString("botany-mysterious-description-addon")); - IoCManager.Resolve().GetComponent(entity).EntityDescription = val; + var metaData = entityManager.GetComponent(entity); + metaData.EntityName += "?"; + metaData.EntityDescription += (" " + Loc.GetString("botany-mysterious-description-addon")); } } diff --git a/Content.Server/Buckle/Components/BuckleComponent.cs b/Content.Server/Buckle/Components/BuckleComponent.cs index ed0fbc8a01..0c40c6c768 100644 --- a/Content.Server/Buckle/Components/BuckleComponent.cs +++ b/Content.Server/Buckle/Components/BuckleComponent.cs @@ -32,7 +32,7 @@ namespace Content.Server.Buckle.Components [ComponentReference(typeof(SharedBuckleComponent))] public class BuckleComponent : SharedBuckleComponent { - [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [ComponentDependency] public readonly AppearanceComponent? Appearance = null; @@ -115,8 +115,8 @@ namespace Content.Server.Buckle.Components /// The strap to reattach to. public void ReAttach(StrapComponent strap) { - var ownTransform = _entityManager.GetComponent(Owner); - var strapTransform = _entityManager.GetComponent(strap.Owner); + var ownTransform = _entMan.GetComponent(Owner); + var strapTransform = _entMan.GetComponent(strap.Owner); ownTransform.AttachParent(strapTransform); ownTransform.LocalRotation = Angle.Zero; @@ -152,7 +152,7 @@ namespace Content.Server.Buckle.Components return false; } - if (!_entityManager.TryGetComponent(to, out strap)) + if (!_entMan.TryGetComponent(to, out strap)) { return false; } @@ -176,7 +176,7 @@ namespace Content.Server.Buckle.Components } } - if (!_entityManager.HasComponent(user)) + if (!_entMan.HasComponent(user)) { popupSystem.PopupEntity(Loc.GetString("buckle-component-no-hands-message"), user, Filter.Entities(user)); return false; @@ -192,10 +192,10 @@ namespace Content.Server.Buckle.Components return false; } - var parent = _entityManager.GetComponent(to).Parent; + var parent = _entMan.GetComponent(to).Parent; while (parent != null) { - if (parent == _entityManager.GetComponent(user)) + if (parent == _entMan.GetComponent(user)) { var message = Loc.GetString(Owner == user ? "buckle-component-cannot-buckle-message" @@ -254,7 +254,7 @@ namespace Content.Server.Buckle.Components SendMessage(new BuckleMessage(Owner, to)); #pragma warning restore 618 - if (_entityManager.TryGetComponent(Owner, out SharedPullableComponent? ownerPullable)) + if (_entMan.TryGetComponent(Owner, out SharedPullableComponent? ownerPullable)) { if (ownerPullable.Puller != null) { @@ -262,7 +262,7 @@ namespace Content.Server.Buckle.Components } } - if (IoCManager.Resolve().TryGetComponent(to, out SharedPullableComponent? toPullable)) + if (_entMan.TryGetComponent(to, out SharedPullableComponent? toPullable)) { if (toPullable.Puller == Owner) { @@ -317,15 +317,15 @@ namespace Content.Server.Buckle.Components BuckledTo = null; - if (_entityManager.GetComponent(Owner).Parent == _entityManager.GetComponent(oldBuckledTo.Owner)) + if (_entMan.GetComponent(Owner).Parent == _entMan.GetComponent(oldBuckledTo.Owner)) { - _entityManager.GetComponent(Owner).AttachParentToContainerOrGrid(); - _entityManager.GetComponent(Owner).WorldRotation = _entityManager.GetComponent(oldBuckledTo.Owner).WorldRotation; + _entMan.GetComponent(Owner).AttachParentToContainerOrGrid(); + _entMan.GetComponent(Owner).WorldRotation = _entMan.GetComponent(oldBuckledTo.Owner).WorldRotation; } Appearance?.SetData(BuckleVisuals.Buckled, false); - if (IoCManager.Resolve().HasComponent(Owner) + if (_entMan.HasComponent(Owner) || (_mobState?.IsIncapacitated() ?? false)) { EntitySystem.Get().Down(Owner); @@ -335,7 +335,7 @@ namespace Content.Server.Buckle.Components EntitySystem.Get().Stand(Owner); } - _mobState?.CurrentState?.EnterState(Owner, IoCManager.Resolve()); + _mobState?.CurrentState?.EnterState(Owner, _entMan); UpdateBuckleStatus(); @@ -395,7 +395,7 @@ namespace Content.Server.Buckle.Components int? drawDepth = null; if (BuckledTo != null && - IoCManager.Resolve().GetComponent(BuckledTo.Owner).LocalRotation.GetCardinalDir() == Direction.North && + _entMan.GetComponent(BuckledTo.Owner).LocalRotation.GetCardinalDir() == Direction.North && BuckledTo.SpriteComponent != null) { drawDepth = BuckledTo.SpriteComponent.DrawDepth - 1; diff --git a/Content.Server/Buckle/Components/StrapComponent.cs b/Content.Server/Buckle/Components/StrapComponent.cs index 0e650dfd83..3d06c638e0 100644 --- a/Content.Server/Buckle/Components/StrapComponent.cs +++ b/Content.Server/Buckle/Components/StrapComponent.cs @@ -21,6 +21,8 @@ namespace Content.Server.Buckle.Components { [ComponentDependency] public readonly SpriteComponent? SpriteComponent = null; + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly HashSet _buckledEntities = new(); /// @@ -147,7 +149,7 @@ namespace Content.Server.Buckle.Components { foreach (var entity in _buckledEntities.ToArray()) { - if (IoCManager.Resolve().TryGetComponent(entity, out var buckle)) + if (_entMan.TryGetComponent(entity, out var buckle)) { buckle.TryUnbuckle(entity, true); } @@ -164,7 +166,7 @@ namespace Content.Server.Buckle.Components bool IInteractHand.InteractHand(InteractHandEventArgs eventArgs) { - if (!IoCManager.Resolve().TryGetComponent(eventArgs.User, out var buckle)) + if (!_entMan.TryGetComponent(eventArgs.User, out var buckle)) { return false; } @@ -174,7 +176,7 @@ namespace Content.Server.Buckle.Components public override bool DragDropOn(DragDropEvent eventArgs) { - if (!IoCManager.Resolve().TryGetComponent(eventArgs.Dragged, out BuckleComponent? buckleComponent)) return false; + if (!_entMan.TryGetComponent(eventArgs.Dragged, out BuckleComponent? buckleComponent)) return false; return buckleComponent.TryBuckle(eventArgs.User, Owner); } } diff --git a/Content.Server/Cargo/Components/CargoConsoleComponent.cs b/Content.Server/Cargo/Components/CargoConsoleComponent.cs index 1e6f0ba9d4..0c23ce8ce4 100644 --- a/Content.Server/Cargo/Components/CargoConsoleComponent.cs +++ b/Content.Server/Cargo/Components/CargoConsoleComponent.cs @@ -21,6 +21,7 @@ namespace Content.Server.Cargo.Components public class CargoConsoleComponent : SharedCargoConsoleComponent { [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly IEntityManager _entMan = default!; private CargoBankAccount? _bankAccount; @@ -57,7 +58,7 @@ namespace Content.Server.Cargo.Components [DataField("errorSound")] private SoundSpecifier _errorSound = new SoundPathSpecifier("/Audio/Effects/error.ogg"); - private bool Powered => !IoCManager.Resolve().TryGetComponent(Owner, out ApcPowerReceiverComponent? receiver) || receiver.Powered; + private bool Powered => !_entMan.TryGetComponent(Owner, out ApcPowerReceiverComponent? receiver) || receiver.Powered; private CargoConsoleSystem _cargoConsoleSystem = default!; [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(CargoConsoleUiKey.Key); @@ -90,7 +91,7 @@ namespace Content.Server.Cargo.Components private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) { - if (!IoCManager.Resolve().TryGetComponent(Owner, out CargoOrderDatabaseComponent? orders)) + if (!_entMan.TryGetComponent(Owner, out CargoOrderDatabaseComponent? orders)) { return; } @@ -160,20 +161,20 @@ namespace Content.Server.Cargo.Components // TODO replace with shuttle code // TEMPORARY loop for spawning stuff on telepad (looks for a telepad adjacent to the console) EntityUid? cargoTelepad = null; - var indices = IoCManager.Resolve().GetComponent(Owner).Coordinates.ToVector2i(IoCManager.Resolve(), _mapManager); + var indices = _entMan.GetComponent(Owner).Coordinates.ToVector2i(_entMan, _mapManager); var offsets = new Vector2i[] { new Vector2i(0, 1), new Vector2i(1, 1), new Vector2i(1, 0), new Vector2i(1, -1), new Vector2i(0, -1), new Vector2i(-1, -1), new Vector2i(-1, 0), new Vector2i(-1, 1), }; var adjacentEntities = new List>(); //Probably better than IEnumerable.concat foreach (var offset in offsets) { - adjacentEntities.Add((indices+offset).GetEntitiesInTileFast(IoCManager.Resolve().GetComponent(Owner).GridID)); + adjacentEntities.Add((indices+offset).GetEntitiesInTileFast(_entMan.GetComponent(Owner).GridID)); } foreach (var enumerator in adjacentEntities) { foreach (EntityUid entity in enumerator) { - if (IoCManager.Resolve().HasComponent(entity) && IoCManager.Resolve().TryGetComponent(entity, out var powerReceiver) && powerReceiver.Powered) + if (_entMan.HasComponent(entity) && _entMan.TryGetComponent(entity, out var powerReceiver) && powerReceiver.Powered) { cargoTelepad = entity; break; @@ -182,7 +183,7 @@ namespace Content.Server.Cargo.Components } if (cargoTelepad != null) { - if (IoCManager.Resolve().TryGetComponent(cargoTelepad.Value, out var telepadComponent)) + if (_entMan.TryGetComponent(cargoTelepad.Value, out var telepadComponent)) { var approvedOrders = _cargoConsoleSystem.RemoveAndGetApprovedOrders(orders.Database.Id); orders.Database.ClearOrderCapacity(); @@ -199,7 +200,7 @@ namespace Content.Server.Cargo.Components private void UpdateUIState() { - if (_bankAccount == null || !IoCManager.Resolve().EntityExists(Owner)) + if (_bankAccount == null || !_entMan.EntityExists(Owner)) { return; } diff --git a/Content.Server/Cargo/Components/CargoTelepadComponent.cs b/Content.Server/Cargo/Components/CargoTelepadComponent.cs index 3a238f24a5..5efeace76e 100644 --- a/Content.Server/Cargo/Components/CargoTelepadComponent.cs +++ b/Content.Server/Cargo/Components/CargoTelepadComponent.cs @@ -25,6 +25,7 @@ namespace Content.Server.Cargo.Components [RegisterComponent] public class CargoTelepadComponent : Component { + [Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; public override string Name => "CargoTelepad"; @@ -67,14 +68,14 @@ namespace Content.Server.Cargo.Components { if (args.Powered && _currentState == CargoTelepadState.Unpowered) { _currentState = CargoTelepadState.Idle; - if(IoCManager.Resolve().TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) + if(_entMan.TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) spriteComponent.LayerSetState(0, "idle"); TeleportLoop(); } else if (!args.Powered) { _currentState = CargoTelepadState.Unpowered; - if (IoCManager.Resolve().TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) + if (_entMan.TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) spriteComponent.LayerSetState(0, "offline"); } } @@ -83,23 +84,23 @@ namespace Content.Server.Cargo.Components if (_currentState == CargoTelepadState.Idle && _teleportQueue.Count > 0) { _currentState = CargoTelepadState.Charging; - if (IoCManager.Resolve().TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) + if (_entMan.TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) spriteComponent.LayerSetState(0, "idle"); Owner.SpawnTimer((int) (TeleportDelay * 1000), () => { - if (!Deleted && !((!IoCManager.Resolve().EntityExists(Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) && _currentState == CargoTelepadState.Charging && _teleportQueue.Count > 0) + if (!Deleted && !((!_entMan.EntityExists(Owner) ? EntityLifeStage.Deleted : _entMan.GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) && _currentState == CargoTelepadState.Charging && _teleportQueue.Count > 0) { _currentState = CargoTelepadState.Teleporting; - if (IoCManager.Resolve().TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) + if (_entMan.TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) spriteComponent.LayerSetState(0, "beam"); Owner.SpawnTimer((int) (TeleportDuration * 1000), () => { - if (!Deleted && !((!IoCManager.Resolve().EntityExists(Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) && _currentState == CargoTelepadState.Teleporting && _teleportQueue.Count > 0) + if (!Deleted && !((!_entMan.EntityExists(Owner) ? EntityLifeStage.Deleted : _entMan.GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) && _currentState == CargoTelepadState.Teleporting && _teleportQueue.Count > 0) { SoundSystem.Play(Filter.Pvs(Owner), _teleportSound.GetSound(), Owner, AudioParams.Default.WithVolume(-8f)); SpawnProduct(_teleportQueue[0]); _teleportQueue.RemoveAt(0); - if (IoCManager.Resolve().TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) + if (_entMan.TryGetComponent(Owner, out var spriteComponent) && spriteComponent.LayerCount > 0) spriteComponent.LayerSetState(0, "idle"); _currentState = CargoTelepadState.Idle; TeleportLoop(); @@ -119,18 +120,18 @@ namespace Content.Server.Cargo.Components if (!_prototypeManager.TryIndex(data.ProductId, out CargoProductPrototype? prototype)) return; - var product = IoCManager.Resolve().SpawnEntity(prototype.Product, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var product = _entMan.SpawnEntity(prototype.Product, _entMan.GetComponent(Owner).Coordinates); - IoCManager.Resolve().GetComponent(product).Anchored = false; + _entMan.GetComponent(product).Anchored = false; // spawn a piece of paper. - var printed = IoCManager.Resolve().SpawnEntity(PrinterOutput, IoCManager.Resolve().GetComponent(Owner).Coordinates); - if (!IoCManager.Resolve().TryGetComponent(printed, out PaperComponent paper)) + var printed = _entMan.SpawnEntity(PrinterOutput, _entMan.GetComponent(Owner).Coordinates); + if (!_entMan.TryGetComponent(printed, out PaperComponent paper)) return; // fill in the order data string val = Loc.GetString("cargo-console-paper-print-name", ("orderNumber", data.OrderNumber)); - IoCManager.Resolve().GetComponent(printed).EntityName = val; + _entMan.GetComponent(printed).EntityName = val; paper.SetContent(Loc.GetString( "cargo-console-paper-print-text", ("orderNumber", data.OrderNumber), @@ -139,7 +140,7 @@ namespace Content.Server.Cargo.Components ("approver", data.Approver))); // attempt to attach the label - if (IoCManager.Resolve().TryGetComponent(product, out PaperLabelComponent label)) + if (_entMan.TryGetComponent(product, out PaperLabelComponent label)) { EntitySystem.Get().TryInsert(Owner, label.LabelSlot, printed); } diff --git a/Content.Server/Chemistry/Components/FoamSolutionAreaEffectComponent.cs b/Content.Server/Chemistry/Components/FoamSolutionAreaEffectComponent.cs index e4a45d7c32..84ae7b91fa 100644 --- a/Content.Server/Chemistry/Components/FoamSolutionAreaEffectComponent.cs +++ b/Content.Server/Chemistry/Components/FoamSolutionAreaEffectComponent.cs @@ -16,6 +16,8 @@ namespace Content.Server.Chemistry.Components [ComponentReference(typeof(SolutionAreaEffectComponent))] public class FoamSolutionAreaEffectComponent : SolutionAreaEffectComponent { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "FoamSolutionAreaEffect"; public new const string SolutionName = "solutionArea"; @@ -23,7 +25,7 @@ namespace Content.Server.Chemistry.Components protected override void UpdateVisuals() { - if (IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance) && + if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance) && EntitySystem.Get().TryGetSolution(Owner, SolutionName, out var solution)) { appearance.SetData(FoamVisuals.Color, solution.Color.WithAlpha(0.80f)); @@ -35,13 +37,13 @@ namespace Content.Server.Chemistry.Components if (!EntitySystem.Get().TryGetSolution(Owner, SolutionName, out var solution)) return; - if (!IoCManager.Resolve().TryGetComponent(entity, out BloodstreamComponent? bloodstream)) + if (!_entMan.TryGetComponent(entity, out BloodstreamComponent? bloodstream)) return; // TODO: Add a permeability property to clothing // For now it just adds to protection for each clothing equipped var protection = 0f; - if (IoCManager.Resolve().TryGetComponent(entity, out InventoryComponent? inventory)) + if (_entMan.TryGetComponent(entity, out InventoryComponent? inventory)) { foreach (var slot in inventory.Slots) { @@ -68,9 +70,9 @@ namespace Content.Server.Chemistry.Components protected override void OnKill() { - if ((!IoCManager.Resolve().EntityExists(Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) + if ((!_entMan.EntityExists(Owner) ? EntityLifeStage.Deleted : _entMan.GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) return; - if (IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance)) + if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance)) { appearance.SetData(FoamVisuals.State, true); } @@ -79,10 +81,10 @@ namespace Content.Server.Chemistry.Components { if (!string.IsNullOrEmpty(_foamedMetalPrototype)) { - IoCManager.Resolve().SpawnEntity(_foamedMetalPrototype, IoCManager.Resolve().GetComponent(Owner).Coordinates); + _entMan.SpawnEntity(_foamedMetalPrototype, _entMan.GetComponent(Owner).Coordinates); } - IoCManager.Resolve().QueueDeleteEntity(Owner); + _entMan.QueueDeleteEntity(Owner); }); } } diff --git a/Content.Server/Chemistry/Components/HyposprayComponent.cs b/Content.Server/Chemistry/Components/HyposprayComponent.cs index 4eb54373da..2df52ebdd1 100644 --- a/Content.Server/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Server/Chemistry/Components/HyposprayComponent.cs @@ -23,6 +23,8 @@ namespace Content.Server.Chemistry.Components [RegisterComponent] public sealed class HyposprayComponent : SharedHyposprayComponent { + [Dependency] private readonly IEntityManager _entMan = default!; + [DataField("clumsyFailChance")] [ViewVariables(VVAccess.ReadWrite)] public float ClumsyFailChance { get; set; } = 0.5f; @@ -80,7 +82,7 @@ namespace Content.Server.Chemistry.Components { target.Value.PopupMessage(Loc.GetString("hypospray-component-feel-prick-message")); var meleeSys = EntitySystem.Get(); - var angle = Angle.FromWorldVec(IoCManager.Resolve().GetComponent(target.Value).WorldPosition - IoCManager.Resolve().GetComponent(user).WorldPosition); + var angle = Angle.FromWorldVec(_entMan.GetComponent(target.Value).WorldPosition - _entMan.GetComponent(user).WorldPosition); meleeSys.SendLunge(angle, user); } @@ -116,8 +118,8 @@ namespace Content.Server.Chemistry.Components // TODO: Does checking for BodyComponent make sense as a "can be hypospray'd" tag? // In SS13 the hypospray ONLY works on mobs, NOT beakers or anything else. - return IoCManager.Resolve().HasComponent(entity) - && IoCManager.Resolve().HasComponent(entity); + return _entMan.HasComponent(entity) + && _entMan.HasComponent(entity); } return true; @@ -125,7 +127,7 @@ namespace Content.Server.Chemistry.Components public override ComponentState GetComponentState() { - var solutionSys = IoCManager.Resolve().EntitySysManager.GetEntitySystem(); + var solutionSys = _entMan.EntitySysManager.GetEntitySystem(); return solutionSys.TryGetSolution(Owner, SolutionName, out var solution) ? new HyposprayComponentState(solution.CurrentVolume, solution.MaxVolume) : new HyposprayComponentState(FixedPoint2.Zero, FixedPoint2.Zero); diff --git a/Content.Server/Chemistry/Components/SmokeSolutionAreaEffectComponent.cs b/Content.Server/Chemistry/Components/SmokeSolutionAreaEffectComponent.cs index a2f4787819..2220984256 100644 --- a/Content.Server/Chemistry/Components/SmokeSolutionAreaEffectComponent.cs +++ b/Content.Server/Chemistry/Components/SmokeSolutionAreaEffectComponent.cs @@ -14,12 +14,14 @@ namespace Content.Server.Chemistry.Components [ComponentReference(typeof(SolutionAreaEffectComponent))] public class SmokeSolutionAreaEffectComponent : SolutionAreaEffectComponent { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "SmokeSolutionAreaEffect"; public new const string SolutionName = "solutionArea"; protected override void UpdateVisuals() { - if (IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance) && + if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance) && EntitySystem.Get().TryGetSolution(Owner, SolutionName, out var solution)) { appearance.SetData(SmokeVisuals.Color, solution.Color); @@ -31,10 +33,10 @@ namespace Content.Server.Chemistry.Components if (!EntitySystem.Get().TryGetSolution(Owner, SolutionName, out var solution)) return; - if (!IoCManager.Resolve().TryGetComponent(entity, out BloodstreamComponent? bloodstream)) + if (!_entMan.TryGetComponent(entity, out BloodstreamComponent? bloodstream)) return; - if (IoCManager.Resolve().TryGetComponent(entity, out InternalsComponent? internals) && + if (_entMan.TryGetComponent(entity, out InternalsComponent? internals) && internals.AreInternalsWorking()) return; @@ -56,9 +58,9 @@ namespace Content.Server.Chemistry.Components protected override void OnKill() { - if ((!IoCManager.Resolve().EntityExists(Owner) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) + if ((!_entMan.EntityExists(Owner) ? EntityLifeStage.Deleted : _entMan.GetComponent(Owner).EntityLifeStage) >= EntityLifeStage.Deleted) return; - IoCManager.Resolve().DeleteEntity(Owner); + _entMan.DeleteEntity(Owner); } } } diff --git a/Content.Server/Chemistry/Components/TransformableContainerComponent.cs b/Content.Server/Chemistry/Components/TransformableContainerComponent.cs index 4a1d46bc46..69f4a527e2 100644 --- a/Content.Server/Chemistry/Components/TransformableContainerComponent.cs +++ b/Content.Server/Chemistry/Components/TransformableContainerComponent.cs @@ -10,6 +10,8 @@ namespace Content.Server.Chemistry.Components [RegisterComponent] public class TransformableContainerComponent : Component { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "TransformableContainer"; public SpriteSpecifier? InitialSprite; @@ -23,14 +25,14 @@ namespace Content.Server.Chemistry.Components { base.Initialize(); - if (IoCManager.Resolve().TryGetComponent(Owner, out SpriteComponent? sprite) && + if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite) && sprite.BaseRSIPath != null) { InitialSprite = new SpriteSpecifier.Rsi(new ResourcePath(sprite.BaseRSIPath), "icon"); } - InitialName = IoCManager.Resolve().GetComponent(Owner).EntityName; - InitialDescription = IoCManager.Resolve().GetComponent(Owner).EntityDescription; + InitialName = _entMan.GetComponent(Owner).EntityName; + InitialDescription = _entMan.GetComponent(Owner).EntityDescription; } protected override void Startup() diff --git a/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs index 6a934338b3..341a348341 100644 --- a/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs +++ b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs @@ -24,9 +24,10 @@ namespace Content.Server.Chemistry.TileReactions { var entities = tile.GetEntitiesInTileFast().ToArray(); var amount = FixedPoint2.Zero; + var entMan = IoCManager.Resolve(); foreach (var entity in entities) { - if (IoCManager.Resolve().TryGetComponent(entity, out CleanableComponent? cleanable)) + if (entMan.TryGetComponent(entity, out CleanableComponent? cleanable)) { var next = (amount + cleanable.CleanAmount) * CleanAmountMultiplier; // Nothing left? @@ -34,7 +35,7 @@ namespace Content.Server.Chemistry.TileReactions break; amount = next; - IoCManager.Resolve().QueueDeleteEntity(entity); + entMan.QueueDeleteEntity(entity); } } diff --git a/Content.Server/Clothing/Components/MagbootsComponent.cs b/Content.Server/Clothing/Components/MagbootsComponent.cs index ba73bc992d..abec1a0286 100644 --- a/Content.Server/Clothing/Components/MagbootsComponent.cs +++ b/Content.Server/Clothing/Components/MagbootsComponent.cs @@ -27,6 +27,9 @@ namespace Content.Server.Clothing.Components [ComponentDependency] private ItemComponent? _item = null; [ComponentDependency] private ItemActionsComponent? _itemActions = null; [ComponentDependency] private SpriteComponent? _sprite = null; + + [Dependency] private readonly IEntityManager _entMan = default!; + private bool _on; [ViewVariables] @@ -56,12 +59,12 @@ namespace Content.Server.Clothing.Components { if (On && eventArgs.Slot == Slots.SHOES) { - if (IoCManager.Resolve().TryGetComponent(eventArgs.User, out MovedByPressureComponent? movedByPressure)) + if (_entMan.TryGetComponent(eventArgs.User, out MovedByPressureComponent? movedByPressure)) { movedByPressure.Enabled = true; } - if (IoCManager.Resolve().TryGetComponent(eventArgs.User, out ServerAlertsComponent? alerts)) + if (_entMan.TryGetComponent(eventArgs.User, out ServerAlertsComponent? alerts)) { alerts.ClearAlert(AlertType.Magboots); } @@ -78,15 +81,15 @@ namespace Content.Server.Clothing.Components if (!Owner.TryGetContainer(out var container)) return; - if (IoCManager.Resolve().TryGetComponent(container.Owner, out InventoryComponent? inventoryComponent) + if (_entMan.TryGetComponent(container.Owner, out InventoryComponent? inventoryComponent) && inventoryComponent.GetSlotItem(Slots.SHOES)?.Owner == Owner) { - if (IoCManager.Resolve().TryGetComponent(container.Owner, out MovedByPressureComponent? movedByPressure)) + if (_entMan.TryGetComponent(container.Owner, out MovedByPressureComponent? movedByPressure)) { movedByPressure.Enabled = false; } - if (IoCManager.Resolve().TryGetComponent(container.Owner, out ServerAlertsComponent? alerts)) + if (_entMan.TryGetComponent(container.Owner, out ServerAlertsComponent? alerts)) { if (On) { @@ -123,7 +126,7 @@ namespace Content.Server.Clothing.Components { public bool DoToggleAction(ToggleItemActionEventArgs args) { - if (!IoCManager.Resolve().TryGetComponent(args.Item, out var magboots)) + if (!_entMan.TryGetComponent(args.Item, out var magboots)) return false; magboots.Toggle(args.Performer); diff --git a/Content.Server/Commands/CommandUtils.cs b/Content.Server/Commands/CommandUtils.cs index eb2e934edf..2efd80be47 100644 --- a/Content.Server/Commands/CommandUtils.cs +++ b/Content.Server/Commands/CommandUtils.cs @@ -55,31 +55,36 @@ namespace Content.Server.Commands public static string SubstituteEntityDetails(IConsoleShell shell, EntityUid ent, string ruleString) { + var entMan = IoCManager.Resolve(); + var transform = entMan.GetComponent(ent); + // gross, is there a better way to do this? ruleString = ruleString.Replace("$ID", ent.ToString()); ruleString = ruleString.Replace("$WX", - IoCManager.Resolve().GetComponent(ent).WorldPosition.X.ToString(CultureInfo.InvariantCulture)); + transform.WorldPosition.X.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$WY", - IoCManager.Resolve().GetComponent(ent).WorldPosition.Y.ToString(CultureInfo.InvariantCulture)); + transform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$LX", - IoCManager.Resolve().GetComponent(ent).LocalPosition.X.ToString(CultureInfo.InvariantCulture)); + transform.LocalPosition.X.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$LY", - IoCManager.Resolve().GetComponent(ent).LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); - ruleString = ruleString.Replace("$NAME", IoCManager.Resolve().GetComponent(ent).EntityName); + transform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); + ruleString = ruleString.Replace("$NAME", entMan.GetComponent(ent).EntityName); if (shell.Player is IPlayerSession player) { if (player.AttachedEntity is {Valid: true} p) { + var pTransform = entMan.GetComponent(p); + ruleString = ruleString.Replace("$PID", ent.ToString()); ruleString = ruleString.Replace("$PWX", - IoCManager.Resolve().GetComponent(p).WorldPosition.X.ToString(CultureInfo.InvariantCulture)); + pTransform.WorldPosition.X.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$PWY", - IoCManager.Resolve().GetComponent(p).WorldPosition.Y.ToString(CultureInfo.InvariantCulture)); + pTransform.WorldPosition.Y.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$PLX", - IoCManager.Resolve().GetComponent(p).LocalPosition.X.ToString(CultureInfo.InvariantCulture)); + pTransform.LocalPosition.X.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$PLY", - IoCManager.Resolve().GetComponent(p).LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); + pTransform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); } } return ruleString; diff --git a/Content.Server/Computer/ComputerComponent.cs b/Content.Server/Computer/ComputerComponent.cs index 14bc1e789e..fd8d06c597 100644 --- a/Content.Server/Computer/ComputerComponent.cs +++ b/Content.Server/Computer/ComputerComponent.cs @@ -15,6 +15,8 @@ namespace Content.Server.Computer [RegisterComponent] public sealed class ComputerComponent : SharedComputerComponent, IMapInit { + [Dependency] private readonly IEntityManager _entMan = default!; + [ViewVariables] [DataField("board")] private string? _boardPrototype; @@ -26,8 +28,8 @@ namespace Content.Server.Computer // Let's ensure the container manager and container are here. Owner.EnsureContainer("board", out var _); - if (IoCManager.Resolve().TryGetComponent(Owner, out ApcPowerReceiverComponent? powerReceiver) && - IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance)) + if (_entMan.TryGetComponent(Owner, out ApcPowerReceiverComponent? powerReceiver) && + _entMan.TryGetComponent(Owner, out AppearanceComponent? appearance)) { appearance.SetData(ComputerVisuals.Powered, powerReceiver.Powered); } @@ -49,7 +51,7 @@ namespace Content.Server.Computer private void PowerReceiverOnOnPowerStateChanged(PowerChangedMessage e) { - if (IoCManager.Resolve().TryGetComponent(Owner, out AppearanceComponent? appearance)) + if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance)) { appearance.SetData(ComputerVisuals.Powered, e.Powered); } @@ -63,7 +65,7 @@ namespace Content.Server.Computer private void CreateComputerBoard() { // Ensure that the construction component is aware of the board container. - if (IoCManager.Resolve().TryGetComponent(Owner, out ConstructionComponent? construction)) + if (_entMan.TryGetComponent(Owner, out ConstructionComponent? construction)) EntitySystem.Get().AddContainer(Owner, "board", construction); // We don't do anything if this is null or empty. @@ -79,7 +81,7 @@ namespace Content.Server.Computer return; } - var board = IoCManager.Resolve().SpawnEntity(_boardPrototype, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var board = _entMan.SpawnEntity(_boardPrototype, _entMan.GetComponent(Owner).Coordinates); if(!container.Insert(board)) Logger.Warning($"Couldn't insert board {board} to computer {Owner}!"); diff --git a/Content.Server/Configurable/ConfigurationComponent.cs b/Content.Server/Configurable/ConfigurationComponent.cs index 2de59b5ddb..d3ef71b925 100644 --- a/Content.Server/Configurable/ConfigurationComponent.cs +++ b/Content.Server/Configurable/ConfigurationComponent.cs @@ -24,6 +24,8 @@ namespace Content.Server.Configurable [ComponentReference(typeof(SharedConfigurationComponent))] public class ConfigurationComponent : SharedConfigurationComponent, IInteractUsing, ISerializationHooks { + [Dependency] private readonly IEntityManager _entMan = default!; + [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(ConfigurationUiKey.Key); [DataField("keys")] private List _keys = new(); @@ -81,10 +83,10 @@ namespace Content.Server.Configurable async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { - if (UserInterface == null || !IoCManager.Resolve().TryGetComponent(eventArgs.User, out ActorComponent? actor)) + if (UserInterface == null || !_entMan.TryGetComponent(eventArgs.User, out ActorComponent? actor)) return false; - if (!IoCManager.Resolve().TryGetComponent(eventArgs.Using, out var tool) || !tool.Qualities.Contains(_qualityNeeded)) + if (!_entMan.TryGetComponent(eventArgs.Using, out var tool) || !tool.Qualities.Contains(_qualityNeeded)) return false; OpenUserInterface(actor); diff --git a/Content.Server/Construction/Commands/TileWallsCommand.cs b/Content.Server/Construction/Commands/TileWallsCommand.cs index 7754398bf1..caaab9fa97 100644 --- a/Content.Server/Construction/Commands/TileWallsCommand.cs +++ b/Content.Server/Construction/Commands/TileWallsCommand.cs @@ -74,7 +74,7 @@ namespace Content.Server.Construction.Commands continue; } - var prototype = IoCManager.Resolve().GetComponent(child).EntityPrototype; + var prototype = entityManager.GetComponent(child).EntityPrototype; while (true) { if (prototype?.Parent == null) @@ -90,12 +90,14 @@ namespace Content.Server.Construction.Commands continue; } - if (!IoCManager.Resolve().GetComponent(child).Anchored) + var childTransform = entityManager.GetComponent(child); + + if (!childTransform.Anchored) { continue; } - var tile = grid.GetTileRef(IoCManager.Resolve().GetComponent(child).Coordinates); + var tile = grid.GetTileRef(childTransform.Coordinates); var tileDef = (ContentTileDefinition) tileDefinitionManager[tile.Tile.TypeId]; if (tileDef.Name == "underplating") @@ -103,7 +105,7 @@ namespace Content.Server.Construction.Commands continue; } - grid.SetTile(IoCManager.Resolve().GetComponent(child).Coordinates, underplatingTile); + grid.SetTile(childTransform.Coordinates, underplatingTile); changed++; } diff --git a/Content.Server/Construction/Completions/BuildComputer.cs b/Content.Server/Construction/Completions/BuildComputer.cs index 8feab86221..f5618e10a1 100644 --- a/Content.Server/Construction/Completions/BuildComputer.cs +++ b/Content.Server/Construction/Completions/BuildComputer.cs @@ -40,7 +40,7 @@ namespace Content.Server.Construction.Completions var board = container.ContainedEntities[0]; - if (!IoCManager.Resolve().TryGetComponent(board, out ComputerBoardComponent? boardComponent)) + if (!entityManager.TryGetComponent(board, out ComputerBoardComponent? boardComponent)) { Logger.Warning($"Computer entity {uid} had an invalid entity in container \"{Container}\"! Aborting build computer action."); return; @@ -50,7 +50,7 @@ namespace Content.Server.Construction.Completions var transform = entityManager.GetComponent(uid); var computer = entityManager.SpawnEntity(boardComponent.Prototype, transform.Coordinates); - IoCManager.Resolve().GetComponent(computer).LocalRotation = transform.LocalRotation; + entityManager.GetComponent(computer).LocalRotation = transform.LocalRotation; var computerContainer = containerSystem.EnsureContainer(computer, Container); @@ -58,7 +58,7 @@ namespace Content.Server.Construction.Completions foreach (var ent in computerContainer.ContainedEntities.ToArray()) { computerContainer.ForceRemove(ent); - IoCManager.Resolve().DeleteEntity(ent); + entityManager.DeleteEntity(ent); } computerContainer.Insert(board); diff --git a/Content.Server/Construction/Completions/BuildMachine.cs b/Content.Server/Construction/Completions/BuildMachine.cs index d31799ac38..8dc732f7c7 100644 --- a/Content.Server/Construction/Completions/BuildMachine.cs +++ b/Content.Server/Construction/Completions/BuildMachine.cs @@ -54,7 +54,7 @@ namespace Content.Server.Construction.Completions var board = entBoardContainer.ContainedEntities[0]; - if (!IoCManager.Resolve().TryGetComponent(board, out MachineBoardComponent? boardComponent)) + if (!entityManager.TryGetComponent(board, out MachineBoardComponent? boardComponent)) { Logger.Warning($"Machine frame entity {uid} had an invalid entity in container \"{MachineFrameComponent.BoardContainer}\"! Aborting build machine action."); return; @@ -64,7 +64,7 @@ namespace Content.Server.Construction.Completions var transform = entityManager.GetComponent(uid); var machine = entityManager.SpawnEntity(boardComponent.Prototype, transform.Coordinates); - IoCManager.Resolve().GetComponent(machine).LocalRotation = transform.LocalRotation; + entityManager.GetComponent(machine).LocalRotation = transform.LocalRotation; var boardContainer = machine.EnsureContainer(MachineFrameComponent.BoardContainer, out var existed); @@ -92,14 +92,14 @@ namespace Content.Server.Construction.Completions } var constructionSystem = entityManager.EntitySysManager.GetEntitySystem(); - if (IoCManager.Resolve().TryGetComponent(machine, out ConstructionComponent? construction)) + if (entityManager.TryGetComponent(machine, out ConstructionComponent? construction)) { // We only add these two container. If some construction needs to take other containers into account, fix this. constructionSystem.AddContainer(machine, MachineFrameComponent.BoardContainer, construction); constructionSystem.AddContainer(machine, MachineFrameComponent.PartContainer, construction); } - if (IoCManager.Resolve().TryGetComponent(machine, out MachineComponent? machineComp)) + if (entityManager.TryGetComponent(machine, out MachineComponent? machineComp)) { machineComp.RefreshParts(); } diff --git a/Content.Server/Construction/Completions/DeleteEntitiesInContainer.cs b/Content.Server/Construction/Completions/DeleteEntitiesInContainer.cs index 43bcd9a735..db0d71c58a 100644 --- a/Content.Server/Construction/Completions/DeleteEntitiesInContainer.cs +++ b/Content.Server/Construction/Completions/DeleteEntitiesInContainer.cs @@ -22,7 +22,7 @@ namespace Content.Server.Construction.Completions foreach (var contained in container.ContainedEntities.ToArray()) { if(container.Remove(contained)) - IoCManager.Resolve().QueueDeleteEntity(contained); + entityManager.QueueDeleteEntity(contained); } } } diff --git a/Content.Server/Construction/Completions/EmptyContainer.cs b/Content.Server/Construction/Completions/EmptyContainer.cs index 59f31f2d94..a1e866a5d5 100644 --- a/Content.Server/Construction/Completions/EmptyContainer.cs +++ b/Content.Server/Construction/Completions/EmptyContainer.cs @@ -25,8 +25,9 @@ namespace Content.Server.Construction.Completions foreach (var contained in container.ContainedEntities.ToArray()) { container.ForceRemove(contained); - IoCManager.Resolve().GetComponent(contained).Coordinates = transform.Coordinates; - IoCManager.Resolve().GetComponent(contained).AttachToGridOrMap(); + var cTransform = entityManager.GetComponent(contained); + cTransform.Coordinates = transform.Coordinates; + cTransform.AttachToGridOrMap(); } } } diff --git a/Content.Server/Construction/Completions/SpawnPrototype.cs b/Content.Server/Construction/Completions/SpawnPrototype.cs index a4c3c1068c..226cfb567e 100644 --- a/Content.Server/Construction/Completions/SpawnPrototype.cs +++ b/Content.Server/Construction/Completions/SpawnPrototype.cs @@ -26,7 +26,7 @@ namespace Content.Server.Construction.Completions if (EntityPrototypeHelpers.HasComponent(Prototype)) { var stackEnt = entityManager.SpawnEntity(Prototype, coordinates); - var stack = IoCManager.Resolve().GetComponent(stackEnt); + var stack = entityManager.GetComponent(stackEnt); entityManager.EntitySysManager.GetEntitySystem().SetCount(stackEnt, Amount, stack); } else diff --git a/Content.Server/Construction/Components/MachineComponent.cs b/Content.Server/Construction/Components/MachineComponent.cs index aaa4216d5e..4614dd4cf5 100644 --- a/Content.Server/Construction/Components/MachineComponent.cs +++ b/Content.Server/Construction/Components/MachineComponent.cs @@ -11,6 +11,8 @@ namespace Content.Server.Construction.Components [RegisterComponent] public class MachineComponent : Component, IMapInit { + [Dependency] private readonly IEntityManager _entMan = default!; + public override string Name => "Machine"; [DataField("board")] @@ -31,14 +33,14 @@ namespace Content.Server.Construction.Components { foreach (var entity in _partContainer.ContainedEntities) { - if (IoCManager.Resolve().TryGetComponent(entity, out var machinePart)) + if (_entMan.TryGetComponent(entity, out var machinePart)) yield return machinePart; } } public void RefreshParts() { - foreach (var refreshable in IoCManager.Resolve().GetComponents(Owner)) + foreach (var refreshable in _entMan.GetComponents(Owner)) { refreshable.RefreshParts(GetAllParts()); } @@ -53,7 +55,7 @@ namespace Content.Server.Construction.Components if (string.IsNullOrEmpty(BoardPrototype)) return; - var entityManager = IoCManager.Resolve(); + var entityManager = _entMan; if (existedBoard || existedParts) { @@ -62,14 +64,14 @@ namespace Content.Server.Construction.Components return; } - var board = entityManager.SpawnEntity(BoardPrototype, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var board = entityManager.SpawnEntity(BoardPrototype, _entMan.GetComponent(Owner).Coordinates); if (!_boardContainer.Insert(board)) { - throw new Exception($"Couldn't insert board with prototype {BoardPrototype} to machine with prototype {IoCManager.Resolve().GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}!"); + throw new Exception($"Couldn't insert board with prototype {BoardPrototype} to machine with prototype {_entMan.GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}!"); } - if (!IoCManager.Resolve().TryGetComponent(board, out var machineBoard)) + if (!_entMan.TryGetComponent(board, out var machineBoard)) { throw new Exception($"Entity with prototype {BoardPrototype} doesn't have a {nameof(MachineBoardComponent)}!"); } @@ -78,29 +80,29 @@ namespace Content.Server.Construction.Components { for (var i = 0; i < amount; i++) { - var p = entityManager.SpawnEntity(MachinePartComponent.Prototypes[part], IoCManager.Resolve().GetComponent(Owner).Coordinates); + var p = entityManager.SpawnEntity(MachinePartComponent.Prototypes[part], _entMan.GetComponent(Owner).Coordinates); if (!partContainer.Insert(p)) - throw new Exception($"Couldn't insert machine part of type {part} to machine with prototype {IoCManager.Resolve().GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}!"); + throw new Exception($"Couldn't insert machine part of type {part} to machine with prototype {_entMan.GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}!"); } } foreach (var (stackType, amount) in machineBoard.MaterialRequirements) { - var stack = EntitySystem.Get().Spawn(amount, stackType, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var stack = EntitySystem.Get().Spawn(amount, stackType, _entMan.GetComponent(Owner).Coordinates); if (!partContainer.Insert(stack)) - throw new Exception($"Couldn't insert machine material of type {stackType} to machine with prototype {IoCManager.Resolve().GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); + throw new Exception($"Couldn't insert machine material of type {stackType} to machine with prototype {_entMan.GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); } foreach (var (compName, info) in machineBoard.ComponentRequirements) { for (var i = 0; i < info.Amount; i++) { - var c = entityManager.SpawnEntity(info.DefaultPrototype, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var c = entityManager.SpawnEntity(info.DefaultPrototype, _entMan.GetComponent(Owner).Coordinates); if(!partContainer.Insert(c)) - throw new Exception($"Couldn't insert machine component part with default prototype '{compName}' to machine with prototype {IoCManager.Resolve().GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); + throw new Exception($"Couldn't insert machine component part with default prototype '{compName}' to machine with prototype {_entMan.GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); } } @@ -108,10 +110,10 @@ namespace Content.Server.Construction.Components { for (var i = 0; i < info.Amount; i++) { - var c = entityManager.SpawnEntity(info.DefaultPrototype, IoCManager.Resolve().GetComponent(Owner).Coordinates); + var c = entityManager.SpawnEntity(info.DefaultPrototype, _entMan.GetComponent(Owner).Coordinates); if(!partContainer.Insert(c)) - throw new Exception($"Couldn't insert machine component part with default prototype '{tagName}' to machine with prototype {IoCManager.Resolve().GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); + throw new Exception($"Couldn't insert machine component part with default prototype '{tagName}' to machine with prototype {_entMan.GetComponent(Owner).EntityPrototype?.ID ?? "N/A"}"); } } } diff --git a/Content.Server/Construction/Components/WelderRefinableComponent.cs b/Content.Server/Construction/Components/WelderRefinableComponent.cs index 42dc194bff..8c54997437 100644 --- a/Content.Server/Construction/Components/WelderRefinableComponent.cs +++ b/Content.Server/Construction/Components/WelderRefinableComponent.cs @@ -19,6 +19,8 @@ namespace Content.Server.Construction.Components [RegisterComponent] public class WelderRefinableComponent : Component, IInteractUsing { + [Dependency] private readonly IEntityManager _entMan = default!; + [DataField("refineResult")] private HashSet? _refineResult = new() { }; @@ -38,7 +40,7 @@ namespace Content.Server.Construction.Components async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { // check if object is welder - if (!IoCManager.Resolve().TryGetComponent(eventArgs.Using, out ToolComponent? tool)) + if (!_entMan.TryGetComponent(eventArgs.Using, out ToolComponent? tool)) return false; // check if someone is already welding object @@ -57,17 +59,17 @@ namespace Content.Server.Construction.Components } // get last owner coordinates and delete it - var resultPosition = IoCManager.Resolve().GetComponent(Owner).Coordinates; - IoCManager.Resolve().DeleteEntity(Owner); + var resultPosition = _entMan.GetComponent(Owner).Coordinates; + _entMan.DeleteEntity(Owner); // spawn each result after refine foreach (var result in _refineResult!) { - var droppedEnt = IoCManager.Resolve().SpawnEntity(result, resultPosition); + var droppedEnt = _entMan.SpawnEntity(result, resultPosition); // TODO: If something has a stack... Just use a prototype with a single thing in the stack. // This is not a good way to do it. - if (IoCManager.Resolve().TryGetComponent(droppedEnt, out var stack)) + if (_entMan.TryGetComponent(droppedEnt, out var stack)) EntitySystem.Get().SetCount(droppedEnt,1, stack); } diff --git a/Content.Server/Construction/Conditions/AirlockBolted.cs b/Content.Server/Construction/Conditions/AirlockBolted.cs index 6c7f89e435..db5c289747 100644 --- a/Content.Server/Construction/Conditions/AirlockBolted.cs +++ b/Content.Server/Construction/Conditions/AirlockBolted.cs @@ -31,14 +31,16 @@ namespace Content.Server.Construction.Conditions { var entity = args.Examined; - if (!IoCManager.Resolve().TryGetComponent(entity, out AirlockComponent? airlock)) return false; + var entMan = IoCManager.Resolve(); + + if (!entMan.TryGetComponent(entity, out AirlockComponent? airlock)) return false; if (airlock.BoltsDown != Value) { if (Value == true) - args.PushMarkup(Loc.GetString("construction-examine-condition-airlock-bolt", ("entityName", Name: IoCManager.Resolve().GetComponent(entity).EntityName)) + "\n"); + args.PushMarkup(Loc.GetString("construction-examine-condition-airlock-bolt", ("entityName", Name: entMan.GetComponent(entity).EntityName)) + "\n"); else - args.PushMarkup(Loc.GetString("construction-examine-condition-airlock-unbolt", ("entityName", Name: IoCManager.Resolve().GetComponent(entity).EntityName)) + "\n"); + args.PushMarkup(Loc.GetString("construction-examine-condition-airlock-unbolt", ("entityName", Name: entMan.GetComponent(entity).EntityName)) + "\n"); return true; } diff --git a/Content.Server/Construction/Conditions/ComponentInTile.cs b/Content.Server/Construction/Conditions/ComponentInTile.cs index 2449b2cfc6..5cea711ce6 100644 --- a/Content.Server/Construction/Conditions/ComponentInTile.cs +++ b/Content.Server/Construction/Conditions/ComponentInTile.cs @@ -56,7 +56,7 @@ namespace Content.Server.Construction.Conditions foreach (var ent in entities) { - if (IoCManager.Resolve().HasComponent(ent, type)) + if (entityManager.HasComponent(ent, type)) return HasEntity; } diff --git a/Content.Server/Construction/Conditions/DoorWelded.cs b/Content.Server/Construction/Conditions/DoorWelded.cs index 34809ef82c..2ba8f99c92 100644 --- a/Content.Server/Construction/Conditions/DoorWelded.cs +++ b/Content.Server/Construction/Conditions/DoorWelded.cs @@ -29,14 +29,16 @@ namespace Content.Server.Construction.Conditions { var entity = args.Examined; - if (!IoCManager.Resolve().TryGetComponent(entity, out ServerDoorComponent? door)) return false; + var entMan = IoCManager.Resolve(); + + if (!entMan.TryGetComponent(entity, out ServerDoorComponent? door)) return false; if (door.IsWeldedShut != Welded) { if (Welded == true) - args.PushMarkup(Loc.GetString("construction-examine-condition-door-weld", ("entityName", Name: IoCManager.Resolve().GetComponent(entity).EntityName)) + "\n"); + args.PushMarkup(Loc.GetString("construction-examine-condition-door-weld", ("entityName", Name: entMan.GetComponent(entity).EntityName)) + "\n"); else - args.PushMarkup(Loc.GetString("construction-examine-condition-door-unweld", ("entityName", Name: IoCManager.Resolve().GetComponent(entity).EntityName)) + "\n"); + args.PushMarkup(Loc.GetString("construction-examine-condition-door-unweld", ("entityName", Name: entMan.GetComponent(entity).EntityName)) + "\n"); return true; } diff --git a/Content.Server/Construction/Conditions/EntityAnchored.cs b/Content.Server/Construction/Conditions/EntityAnchored.cs index 32d9244028..9c89e89aa4 100644 --- a/Content.Server/Construction/Conditions/EntityAnchored.cs +++ b/Content.Server/Construction/Conditions/EntityAnchored.cs @@ -28,12 +28,14 @@ namespace Content.Server.Construction.Conditions { var entity = args.Examined; + var anchored = IoCManager.Resolve().GetComponent(entity).Anchored; + switch (Anchored) { - case true when !IoCManager.Resolve().GetComponent(entity).Anchored: + case true when !anchored: args.PushMarkup(Loc.GetString("construction-examine-condition-entity-anchored")); return true; - case false when IoCManager.Resolve().GetComponent(entity).Anchored: + case false when anchored: args.PushMarkup(Loc.GetString("construction-examine-condition-entity-unanchored")); return true; }