private void Init()
        {
            settingsData = new SettingsData();
            settingsData.AddTabData(CreateTabData("A", "icon-settings"));
            settingsData.AddTabData(CreateTabData("B", "icon-play"));
            settingsData.AddTabData(CreateTabData("C", "icon-music"));

            var bg = RootMain.CreateChild<UguiSprite>("bg", -1);
            {
                bg.Anchor = AnchorType.Fill;
                bg.Offset = Offset.Zero;
                bg.Alpha = 0.25f;
            }
        }
        private void Init()
        {
            settingsData = new SettingsData();
            settingsData.AddTabData(CreateTabData("A", "icon-settings"));
            settingsData.AddTabData(CreateTabData("B", "icon-play"));
            settingsData.AddTabData(CreateTabData("C", "icon-music"));

            var bg = RootMain.CreateChild <UguiSprite>("bg", -1);

            {
                bg.Size  = new Vector2(600f, 600f);
                bg.Alpha = 0.25f;
            }
            contentHolder = RootMain.CreateChild <ContentHolder>();
            {
                contentHolder.Size = new Vector2(500f, 500f);
                contentHolder.SetSettingsData(settingsData);
            }
        }
Beispiel #3
0
        public GameConfiguration()
        {
            Settings = new SettingsData();

            RulesetMode     = InitEnumBindable(nameof(RulesetMode), GameModeType.BeatsStandard);
            MapsetSort      = InitEnumBindable(nameof(MapsetSort), MapsetSortType.Title);
            RankDisplay     = InitEnumBindable(nameof(RankDisplay), RankDisplayType.Local);
            Username        = InitStringBindable(nameof(Username), "");
            Password        = InitStringBindable(nameof(Password), "");
            SaveCredentials = InitBoolBindable(nameof(SaveCredentials), false);
            LastLoginApi    = InitEnumBindable(nameof(LastLoginApi), ApiProviderType.Osu);

            // General settings
            SettingsTab generalTab = Settings.AddTabData(new SettingsTab("General", "icon-settings"));
            {
                generalTab.AddEntry(new SettingsEntryBool("Prefer unicode", PreferUnicode  = InitBoolBindable(nameof(PreferUnicode), false)));
                generalTab.AddEntry(new SettingsEntryBool("Show messages", DisplayMessages = InitBoolBindable(nameof(DisplayMessages), true)));
                DisplayMessages.OnNewValue += (display) =>
                {
                    // Automatically disable messages in game if message displaying is false.
                    if (!display)
                    {
                        DisplayMessagesInGame.Value = false;
                    }
                };
                generalTab.AddEntry(new SettingsEntryBool("Show messages in game", DisplayMessagesInGame = InitBoolBindable(nameof(DisplayMessagesInGame), false)));
                DisplayMessagesInGame.OnNewValue += (display) =>
                {
                    // Turn off this configuration when toggled on but display message itself is turned off.
                    if (display && !DisplayMessages.Value)
                    {
                        DisplayMessagesInGame.Value = false;
                    }
                };
                generalTab.AddEntry(new SettingsEntryBool("Use parallax", UseParallax = InitBoolBindable(nameof(UseParallax), true)));
            }

            // Performance settings
            SettingsTab performanceTab = Settings.AddTabData(new SettingsTab("Performance", "icon-performance"));
            {
                performanceTab.AddEntry(new SettingsEntryBool("Show FPS", ShowFps       = InitBoolBindable(nameof(ShowFps), false)));
                performanceTab.AddEntry(new SettingsEntryBool("Use Blur", UseBlurShader = InitBoolBindable(nameof(UseBlurShader), false)));
                performanceTab.AddEntry(new SettingsEntryEnum <ResolutionType>("Resolution Quality", ResolutionQuality = InitEnumBindable(nameof(ResolutionQuality), ResolutionType.Best)));
                performanceTab.AddEntry(new SettingsEntryEnum <FramerateType>("Framerate", Framerate = InitEnumBindable(nameof(Framerate), FramerateType._60fps)));
            }

            // Gameplay settings
            SettingsTab gameplayTab = Settings.AddTabData(new SettingsTab("Gameplay", "icon-game"));
            {
                gameplayTab.AddEntry(new SettingsEntryBool("Use Storyboard", ShowStoryboard = InitBoolBindable(nameof(ShowStoryboard), false)));
                gameplayTab.AddEntry(new SettingsEntryBool("Use Video", ShowVideo           = InitBoolBindable(nameof(ShowVideo), false)));
                gameplayTab.AddEntry(new SettingsEntryBool("Use Map Skins", UseBeatmapSkins = InitBoolBindable(nameof(UseBeatmapSkins), false)));
                gameplayTab.AddEntry(new SettingsEntryFloat("Background Dim", BackgroundDim = InitFloatBindable(nameof(BackgroundDim), 0.5f, 0f, 1f))
                {
                    Formatter = "P0"
                });
            }

            // Sound settings
            SettingsTab soundTab = Settings.AddTabData(new SettingsTab("Sound", "icon-sound"));
            {
                soundTab.AddEntry(new SettingsEntryFloat("Master Volume", MasterVolume = InitFloatBindable(nameof(MasterVolume), 1f, 0f, 1f))
                {
                    Formatter = "P0"
                });
                soundTab.AddEntry(new SettingsEntryFloat("Music Volume", MusicVolume = InitFloatBindable(nameof(MusicVolume), 1f, 0f, 1f))
                {
                    Formatter = "P0"
                });
                soundTab.AddEntry(new SettingsEntryFloat("Hitsound Volume", HitsoundVolume = InitFloatBindable(nameof(HitsoundVolume), 1f, 0f, 1f))
                {
                    Formatter = "P0"
                });
                soundTab.AddEntry(new SettingsEntryFloat("Effect Volume", EffectVolume = InitFloatBindable(nameof(EffectVolume), 1f, 0f, 1f))
                {
                    Formatter = "P0"
                });
                soundTab.AddEntry(new SettingsEntryInt("Global Offset", GlobalOffset              = InitIntBindable(nameof(GlobalOffset), 0, -100, 100)));
                soundTab.AddEntry(new SettingsEntryBool("Use Map Hitsounds", UseBeatmapHitsounds  = InitBoolBindable(nameof(UseBeatmapHitsounds), true)));
                soundTab.AddEntry(new SettingsEntryBool("Button hover sound", UseButtonHoverSound = InitBoolBindable(nameof(UseButtonHoverSound), true)));
            }

            // Other settings
            SettingsTab otherTab = Settings.AddTabData(new SettingsTab("Other", "icon-misc"));
            {
                otherTab.AddEntry(new SettingsEntryEnum <NotificationType>("Persistent notification level", PersistNotificationLevel = InitEnumBindable(nameof(NotificationType), NotificationType.Warning)));
                otherTab.AddEntry(new SettingsEntryEnum <LogType>("Log to notification level", LogToNotificationLevel = InitEnumBindable(nameof(LogType), LogType.Warning)));
            }

            // Version settings
            SettingsTab versionTab = Settings.AddTabData(new SettingsTab("Version", "icon-version"));

            {
                versionTab.AddEntry(new SettingsEntryAction($"Game version ({App.GameVersion})", () =>
                {
                    UnityEngine.Application.OpenURL(App.GameRepository);
                }));
                versionTab.AddEntry(new SettingsEntryAction($"Framework version ({App.FrameworkVersion})", () =>
                {
                    UnityEngine.Application.OpenURL(App.FrameworkRepository);
                }));
            }

            // Trigger change for all configurations on load.
            OnLoad += delegate
            {
                foreach (var entry in allSettings)
                {
                    entry.Trigger();
                }
            };
        }