From e0928d78e02375c33b097831157dd17e799f6752 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 1 Sep 2020 21:11:17 +0200 Subject: [PATCH] Make verbs be created through IDynamicTypeFactory To allow for dependencies to be declared on them --- Content.Shared/GameObjects/Verbs/VerbUtility.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Content.Shared/GameObjects/Verbs/VerbUtility.cs b/Content.Shared/GameObjects/Verbs/VerbUtility.cs index a876f7c11b..4a2bb756e0 100644 --- a/Content.Shared/GameObjects/Verbs/VerbUtility.cs +++ b/Content.Shared/GameObjects/Verbs/VerbUtility.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Reflection; using Robust.Shared.Containers; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; using Robust.Shared.Utility; namespace Content.Shared.GameObjects.Verbs @@ -16,6 +17,8 @@ namespace Content.Shared.GameObjects.Verbs // This works for now though. public static IEnumerable<(IComponent, Verb)> GetVerbs(IEntity entity) { + var typeFactory = IoCManager.Resolve(); + foreach (var component in entity.GetAllComponents()) { var type = component.GetType(); @@ -26,7 +29,7 @@ namespace Content.Shared.GameObjects.Verbs continue; } - var verb = (Verb)Activator.CreateInstance(nestedType); + var verb = typeFactory.CreateInstance(nestedType); yield return (component, verb); } } @@ -38,6 +41,8 @@ namespace Content.Shared.GameObjects.Verbs /// The assembly to search for global verbs in. public static IEnumerable GetGlobalVerbs(Assembly assembly) { + var typeFactory = IoCManager.Resolve(); + foreach (Type type in assembly.GetTypes()) { if (Attribute.IsDefined(type, typeof(GlobalVerbAttribute))) @@ -46,7 +51,7 @@ namespace Content.Shared.GameObjects.Verbs { continue; } - yield return (GlobalVerb)Activator.CreateInstance(type); + yield return typeFactory.CreateInstance(type); } } }