namespace ICRebuild.Core; public sealed record Feature(int Id, string Name, string Group, float Min = 0, float Max = 0, float Default = 0); public static class Features { public static readonly Feature[] All = [ new(1,"移速调整","移动",0,5), new(2,"最大加速度","移动"), new(3,"强制移动","移动"), new(4,"击退距离调整","移动",0,30), new(5,"掉落无伤","移动"), new(6,"无掉落","移动"), new(7,"魅惑与恐惧移动处理","移动"), new(8,"状态屏蔽","移动"), new(9,"飞天遁地","深层迷宫",-10,10,-7), new(10,"深层迷宫专用模式","深层迷宫"), new(11,"迷宫状态显示","深层迷宫"), new(13,"技能距离调整","战斗",0,40), new(14,"目标圈半径调整","战斗",0,5), new(15,"后摇期间可移动","战斗"), new(16,"突进无位移","战斗"), new(17,"复唱缩减秒数","战斗",0,1), new(18,"快速结印","战斗"), new(19,"咏唱缩减秒数","战斗",0,1), new(20,"PVP 动画锁上限","战斗",0,1,0.6f), new(27,"坐标移动","坐标"), new(28,"面向调整","坐标"), new(29,"目标缩放","坐标",0.1f,5,1), new(36,"网络记录","网络"), new(37,"包解析与 Opcode 管理","网络") ]; public static Feature Get(int id) => All.First(x => x.Id == id); } public enum Adaptation { Unadapted, Testable, Verified, KnownBroken } public enum ModuleState { Disabled, Enabled, Failed } public sealed class ModuleStatus(Feature feature) { public Feature Feature { get; } = feature; public Adaptation Adaptation { get; set; } = Adaptation.Unadapted; public ModuleState State { get; set; } public bool Requested { get; set; } public bool HasImplementation { get; set; } public string Detail { get; set; } = "未接入"; }