using System; using System.Collections.Generic; using ZuneModCore.Mods; namespace ZuneModCore; public class ModManager { private static List? _mods; /// /// Factories for all available mods. /// public static readonly IReadOnlyList> ModFactories = new List> { new FeaturesOverrideModFactory(), new VideoSyncModFactory(), new WebservicesModFactory(), new BackgroundImageModFactory(), new MbidLocatorModFactory(), }.AsReadOnly(); /// /// Creates instances of each mod using the available factories /// using the default MVVM IoC instance. /// public static IReadOnlyList GetAvailableMods() => GetAvailableMods(CommunityToolkit.Mvvm.DependencyInjection.Ioc.Default); /// /// Creates instances of each mod using the available factories. /// public static IReadOnlyList GetAvailableMods(IServiceProvider services) { if (_mods is null) { _mods = new(ModFactories.Count); foreach (var modType in ModFactories) { var mod = modType.Create(services); _mods.Add(mod); } } return _mods; } }