From a3fc00dc29acea07b74f655d186c3f6a20f2808f Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 1 Sep 2021 13:23:52 +0200 Subject: [PATCH] Change some data definitions to not do IoC resolve in their constructors. --- .../Light/Components/LightBehaviourComponent.cs | 9 +++++---- .../Chemistry/ReactionEffects/AreaReactionEffect.cs | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Content.Client/Light/Components/LightBehaviourComponent.cs b/Content.Client/Light/Components/LightBehaviourComponent.cs index 4d6c33c1a8..4195f6b8f2 100644 --- a/Content.Client/Light/Components/LightBehaviourComponent.cs +++ b/Content.Client/Light/Components/LightBehaviourComponent.cs @@ -26,7 +26,7 @@ namespace Content.Client.Light.Components [ImplicitDataDefinitionForInheritors] public abstract class LightBehaviourAnimationTrack : AnimationTrackProperty { - protected readonly IRobustRandom _random = IoCManager.Resolve(); + protected IRobustRandom _random = default!; [DataField("id")] [ViewVariables] public string ID { get; set; } = string.Empty; @@ -53,8 +53,9 @@ namespace Content.Client.Light.Components private float _maxTime = default; private IEntity _parent = default!; - public void Initialize(IEntity parent) + public void Initialize(IEntity parent, IRobustRandom random) { + _random = random; _parent = parent; if (Enabled && _parent.TryGetComponent(out PointLightComponent? light)) @@ -399,7 +400,7 @@ namespace Content.Client.Light.Components foreach (var container in _animations) { - container.LightBehaviour.Initialize(Owner); + container.LightBehaviour.Initialize(Owner, IoCManager.Resolve()); } // we need to initialize all behaviours before starting any @@ -541,7 +542,7 @@ namespace Content.Client.Light.Components AnimationTracks = {behaviour} }; - behaviour.Initialize(Owner); + behaviour.Initialize(Owner, IoCManager.Resolve()); var container = new AnimationContainer(key, animation, behaviour); _animations.Add(container); diff --git a/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs b/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs index cf3ab9882c..f2d16600d1 100644 --- a/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs +++ b/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs @@ -5,13 +5,13 @@ using Content.Shared.Audio; using Content.Shared.Chemistry.Reaction; using Content.Shared.Sound; using JetBrains.Annotations; -using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Server.Chemistry.ReactionEffects @@ -21,7 +21,7 @@ namespace Content.Server.Chemistry.ReactionEffects /// [UsedImplicitly] [ImplicitDataDefinitionForInheritors] - public abstract class AreaReactionEffect : IReactionEffect + public abstract class AreaReactionEffect : IReactionEffect, ISerializationHooks { [Dependency] private readonly IMapManager _mapManager = default!; @@ -82,7 +82,7 @@ namespace Content.Server.Chemistry.ReactionEffects /// [DataField("sound", required: true)] private SoundSpecifier _sound = default!; - protected AreaReactionEffect() + void ISerializationHooks.AfterDeserialization() { IoCManager.InjectDependencies(this); }