This repository has been archived by the owner on Aug 23, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MultiModLoaderHandler.cs
52 lines (37 loc) · 1.75 KB
/
MultiModLoaderHandler.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System.Collections.Generic;
using System.Linq;
using NLog;
using Packsly3.Core.Launcher.Instance;
namespace Packsly3.Core.Launcher.Modloader.Impl {
public abstract class MultiModLoaderHandler<T> : BasicModLoaderHandler<T> where T : IMinecraftInstance {
#region Fields
private readonly Logger logger = LogManager.GetCurrentClassLogger();
private readonly List<IModLoaderInstallationStrategy<T>> instalationStrategies = new List<IModLoaderInstallationStrategy<T>>();
#endregion
#region IModLoaderHandler
public override bool IsCompatible(string modLoader) {
return instalationStrategies.Any(strategy => strategy.Name == modLoader);
}
public override void Install(T instance, string modLoader, string version) {
instalationStrategies
.First(strategy => strategy.Name == modLoader)
.Install(instance, version);
}
public override void Uninstall(T instance, string modLoader) {
instalationStrategies
.First(strategy => strategy.Name == modLoader)
.Uninstall(instance);
}
#endregion
public void RegisterInstalationStrategy(IModLoaderInstallationStrategy<T> installationStrategy) {
if (instalationStrategies.Contains(installationStrategy)) {
return;
}
if (instalationStrategies.Any(strategy => strategy.Identificator == installationStrategy.Identificator)) {
logger.Warn($"There already is a registered mod loader installation strategy with id '{installationStrategy.Identificator}'!");
return;
}
instalationStrategies.Add(installationStrategy);
}
}
}