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;
 }