public static ISettingsBuilder AddButterLibSubSystems(this ISettingsBuilder settings) { foreach (var subSystem in DependencyInjectionExtensions.GetServiceProvider((null as Game) !).GetRequiredService <IEnumerable <ISubSystem> >()) { if (!subSystem.CanBeDisabled) { continue; } var prop = new ProxyRef <bool>(() => subSystem.IsEnabled, state => { if (state) { subSystem.Enable(); } else { subSystem.Disable(); } }); settings = settings.CreateGroup($"SubSystem {subSystem.Id}", builder => builder.AddBool($"{subSystem.Id} Enabled", "Enabled", prop, bBuilder => bBuilder.SetHintText(subSystem.Description).SetRequireRestart(!subSystem.CanBeSwitchedAtRuntime))); } return(settings); }
public SetDropdownIndexAction(IRef context, SelectorVM <SelectorItemVM> value) { DropdownContext = context; SelectedIndexProperty = AccessTools.Property(DropdownContext.Value.GetType(), nameof(IDropdownProvider.SelectedIndex)); Context = new ProxyRef <object>(() => SelectedIndexProperty.GetValue(DropdownContext.Value), o => SelectedIndexProperty.SetValue(DropdownContext.Value, o)); Value = value.SelectedIndex; Original = Context.Value; }