Introduce ModManager and IModFactory

This commit is contained in:
Yoshi Askharoun
2024-05-21 20:54:02 -05:00
parent 5e78ca81aa
commit 44d033786d
9 changed files with 108 additions and 60 deletions
+37
View File
@@ -0,0 +1,37 @@
using System.Collections.Generic;
using ZuneModCore.Mods;
namespace ZuneModCore;
public class ModManager
{
/// <summary>
/// Factories for all available mods.
/// </summary>
public static readonly IReadOnlyList<IModFactory<Mod>> ModFactories = new List<IModFactory<Mod>>
{
new FeaturesOverrideModFactory(),
new VideoSyncModFactory(),
new WebservicesModFactory(),
new BackgroundImageModFactory(),
new MbidLocatorModFactory(),
}.AsReadOnly();
private static List<Mod>? _mods;
public static IReadOnlyList<Mod> GetAvailableMods()
{
if (_mods is null)
{
_mods = new(ModFactories.Count);
var services = CommunityToolkit.Mvvm.DependencyInjection.Ioc.Default;
foreach (var modType in ModFactories)
{
var mod = modType.Create(services);
_mods.Add(mod);
}
}
return _mods;
}
}