// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Localisation; using osu.Game.Configuration; using osu.Game.Graphics.UserInterfaceV2; using osu.Game.Localisation; using osu.Game.Online.API; using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Overlays.Settings.Sections.UserInterface { public partial class MainMenuSettings : SettingsSubsection { protected override LocalisableString Header => UserInterfaceStrings.MainMenuHeader; private IBindable user = null!; private readonly Bindable backgroundSourceNote = new Bindable(); [BackgroundDependencyLoader] private void load(OsuConfigManager config, IAPIProvider api) { user = api.LocalUser.GetBoundCopy(); Children = new Drawable[] { new SettingsItemV2(new FormCheckBox { Caption = UserInterfaceStrings.ShowMenuTips, Current = config.GetBindable(OsuSetting.MenuTips) }), new SettingsItemV2(new FormCheckBox { Caption = UserInterfaceStrings.InterfaceVoices, Current = config.GetBindable(OsuSetting.MenuVoice) }) { Keywords = new[] { "intro", "welcome" }, }, new SettingsItemV2(new FormCheckBox { Caption = UserInterfaceStrings.OsuMusicTheme, Current = config.GetBindable(OsuSetting.MenuMusic) }) { Keywords = new[] { "intro", "welcome" }, }, new SettingsItemV2(new FormEnumDropdown { Caption = UserInterfaceStrings.IntroSequence, Current = config.GetBindable(OsuSetting.IntroSequence), }), new SettingsItemV2(new FormEnumDropdown { Caption = UserInterfaceStrings.BackgroundSource, Current = config.GetBindable(OsuSetting.MenuBackgroundSource), }) { Note = { BindTarget = backgroundSourceNote }, }, new SettingsItemV2(new FormEnumDropdown { Caption = UserInterfaceStrings.SeasonalBackgrounds, Current = config.GetBindable(OsuSetting.SeasonalBackgroundMode), }) }; } protected override void LoadComplete() { base.LoadComplete(); user.BindValueChanged(u => { if (u.NewValue?.IsSupporter != true) backgroundSourceNote.Value = new SettingsNote.Data(UserInterfaceStrings.NotSupporterNote, SettingsNote.Type.Informational); else backgroundSourceNote.Value = null; }, true); } } }