mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-06 14:37:38 +08:00
更新了配置文件格式,原有的配置文件将被自动无缝迁移,详情请见新的配置文件中的注释(例外:`SlideJudgeTweak` 不再默认启用) 旧配置文件将被重命名备份,如果更新到此版本遇到 Bug 请联系我们 Updated configuration file schema. The old config file will be migrated automatically and seamlessly. See the comments in the new configuration file for details. (Except for `SlideJudgeTweak` is no longer enabled by default) Your old configuration file will be renamed as a backup. If you encounter any bug with this version, please contact us.
60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using AquaMai.Config.Interfaces;
|
|
using Mono.Cecil;
|
|
|
|
namespace AquaMai.Config.HeadlessLoader;
|
|
|
|
public class HeadlessConfigInterface
|
|
{
|
|
private readonly Assembly loadedConfigAssembly;
|
|
|
|
public IReflectionProvider ReflectionProvider { get; init; }
|
|
public IReflectionManager ReflectionManager { get; init; }
|
|
|
|
public HeadlessConfigInterface(Assembly loadedConfigAssembly, AssemblyDefinition modsAssembly)
|
|
{
|
|
this.loadedConfigAssembly = loadedConfigAssembly;
|
|
|
|
ReflectionProvider = Activator.CreateInstance(
|
|
loadedConfigAssembly.GetType("AquaMai.Config.Reflection.MonoCecilReflectionProvider"), [modsAssembly]) as IReflectionProvider;
|
|
ReflectionManager = Activator.CreateInstance(
|
|
loadedConfigAssembly.GetType("AquaMai.Config.Reflection.ReflectionManager"), [ReflectionProvider]) as IReflectionManager;
|
|
}
|
|
|
|
public IConfigView CreateConfigView(string tomlString = null)
|
|
{
|
|
return Activator.CreateInstance(
|
|
loadedConfigAssembly.GetType("AquaMai.Config.ConfigView"),
|
|
tomlString == null ? [] : [tomlString]) as IConfigView;
|
|
}
|
|
|
|
public IConfig CreateConfig()
|
|
{
|
|
return Activator.CreateInstance(
|
|
loadedConfigAssembly.GetType("AquaMai.Config.Config"), [ReflectionManager]) as IConfig;
|
|
}
|
|
|
|
public IConfigParser GetConfigParser()
|
|
{
|
|
return loadedConfigAssembly
|
|
.GetType("AquaMai.Config.ConfigParser")
|
|
.GetField("Instance", BindingFlags.Public | BindingFlags.Static)
|
|
.GetValue(null) as IConfigParser;
|
|
}
|
|
|
|
public IConfigSerializer CreateConfigSerializer(IConfigSerializer.Options options)
|
|
{
|
|
return Activator.CreateInstance(
|
|
loadedConfigAssembly.GetType("AquaMai.Config.ConfigSerializer"), [options]) as IConfigSerializer;
|
|
}
|
|
|
|
public IConfigMigrationManager GetConfigMigrationManager()
|
|
{
|
|
return loadedConfigAssembly
|
|
.GetType("AquaMai.Config.Migration.ConfigMigrationManager")
|
|
.GetField("Instance", BindingFlags.Public | BindingFlags.Static)
|
|
.GetValue(null) as IConfigMigrationManager;
|
|
}
|
|
}
|