/// <summary> /// Gets all mods, this should be fired before gameInitialization. /// </summary> public void GetMods() { ModBase[] mods = FindObjectsOfType <ModBase>(); foreach (ModBase mod in mods) { ModInfo info = new ModInfo { ModClass = mod }; Logging.Info(Language.ForgeModRegistered + GenericHelpers.GetAttribute <Mod>(mod.GetType()).ModId); mod.transform.SetParent(transform.parent); _registeredMods.Add(GenericHelpers.GetAttribute <Mod>(mod.GetType()).ModId, info); } foreach (Type type in GenericHelpers.GetTypesWithAttribute(typeof(Mod), null)) { if (mods.Any(m => type.Name == m.GetType().Name)) { continue; } ModInfo info = TypeToModInfo(type); Logging.Info(Language.ForgeModRegistered + GenericHelpers.GetAttribute <Mod>(type).ModId); _registeredMods.Add(GenericHelpers.GetAttribute <Mod>(type).ModId, info); } }
/// <summary> /// Converts a type to a modInfo /// </summary> /// <param name="type">Converts a given type to a modInfo Class</param> /// <returns> A ModInfo object containing the neccesairy mod data</returns> public ModInfo TypeToModInfo(Type type) { GameObject modObject = new GameObject(GenericHelpers.GetAttribute <Mod>(type).ModId); ModInfo info = new ModInfo { ModClass = modObject.AddComponent(type) as ModBase, }; modObject.transform.SetParent(transform.parent); return(info); }
/// <summary> /// Gets a list of mods from the given assembly /// </summary> /// <param name="assembly">The assembly from which the mods will be registered</param> /// <returns>An array of all found mods converted to ModInfo objects</returns> public ModInfo[] GetMods(Assembly assembly) { List <ModInfo> modInfos = new List <ModInfo>(); foreach (Type type in GenericHelpers.GetTypesWithAttribute(typeof(Mod), assembly)) { ModInfo info = TypeToModInfo(type); Logging.Info(Language.ForgeModRegistered + GenericHelpers.GetAttribute <Mod>(type).ModId); _registeredMods.Add(GenericHelpers.GetAttribute <Mod>(type).ModId, info); modInfos.Add(info); } return(modInfos.ToArray()); }