2 using System.Collections.Generic;
7 namespace Loot.ModSupport
13 internal static class ModSupportTunneler
15 private static List<ModSupport> _modSupporters;
17 public static T GetModSupport<T>() where T : ModSupport
19 return (T)_modSupporters?.FirstOrDefault(s => s.GetType() == typeof(T) || s.GetType().IsAssignableFrom(typeof(T)));
22 public static void Init()
24 foreach (var modSupporter
in GetSupporters())
26 Mod supportingMod = modSupporter.GetSupportingMod();
27 modSupporter.ModIsLoaded = supportingMod != null && modSupporter.CheckValidity(supportingMod);
31 public static void AddServerSupport()
33 foreach (var modSupporter
in GetSupporters())
35 Mod supportingMod = modSupporter.GetSupportingMod();
36 if (modSupporter.ModIsLoaded)
38 modSupporter.AddServerSupport(supportingMod);
43 public static void AddClientSupport()
45 foreach (var modSupporter
in GetSupporters())
47 Mod supportingMod = modSupporter.GetSupportingMod();
48 if (modSupporter.ModIsLoaded)
50 modSupporter.AddClientSupport(supportingMod);
55 private static IEnumerable<ModSupport> GetSupporters()
57 return _modSupporters ??
59 ReflectUtils.GetLootNonAbstractClasses(t => t.IsSubclassOf(typeof(ModSupport)))
60 .Select(t => (ModSupport)Activator.CreateInstance(t))