// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; using osu.Framework.Configuration; using osu.Framework.Platform; using osu.Game.Modes; namespace osu.Game.Configuration { public class OsuConfigManager : ConfigManager { protected override void InitialiseDefaults() { #pragma warning disable CS0612 // Type or member is obsolete Set(OsuConfig.Username, string.Empty); Set(OsuConfig.Token, string.Empty); Set(OsuConfig.PlayMode, PlayMode.Osu); Set(OsuConfig.AudioDevice, string.Empty); Set(OsuConfig.SavePassword, false); Set(OsuConfig.SaveUsername, true); Set(OsuConfig.CursorSize, 1.0, 0.5f, 2); Set(OsuConfig.DimLevel, 30, 0, 100); Set(OsuConfig.MouseDisableButtons, false); Set(OsuConfig.SnakingInSliders, true); Set(OsuConfig.SnakingOutSliders, false); Set(OsuConfig.MenuParallax, true); //todo: implement all settings below this line (remove the Disabled set when doing so). Set(OsuConfig.MouseSpeed, 1.0).Disabled = true; Set(OsuConfig.BeatmapDirectory, @"Songs").Disabled = true; // TODO: use thi.Disabled = trues Set(OsuConfig.AllowPublicInvites, true).Disabled = true; Set(OsuConfig.AutoChatHide, true).Disabled = true; Set(OsuConfig.AutomaticDownload, true).Disabled = true; Set(OsuConfig.AutomaticDownloadNoVideo, false).Disabled = true; Set(OsuConfig.BlockNonFriendPM, false).Disabled = true; Set(OsuConfig.BloomSoftening, false).Disabled = true; Set(OsuConfig.BossKeyFirstActivation, true).Disabled = true; Set(OsuConfig.ChatAudibleHighlight, true).Disabled = true; Set(OsuConfig.ChatChannels, string.Empty).Disabled = true; Set(OsuConfig.ChatFilter, false).Disabled = true; Set(OsuConfig.ChatHighlightName, true).Disabled = true; Set(OsuConfig.ChatMessageNotification, true).Disabled = true; Set(OsuConfig.ChatLastChannel, string.Empty).Disabled = true; Set(OsuConfig.ChatRemoveForeign, false).Disabled = true; //Set(OsuConfig.ChatSortMode, UserSortMode.Rank).Disabled = true; Set(OsuConfig.ComboBurst, true).Disabled = true; Set(OsuConfig.ComboFire, false).Disabled = true; Set(OsuConfig.ComboFireHeight, 3).Disabled = true; Set(OsuConfig.ConfirmExit, false).Disabled = true; Set(OsuConfig.AutoSendNowPlaying, true).Disabled = true; Set(OsuConfig.AutomaticCursorSizing, false).Disabled = true; Set(OsuConfig.Display, 1).Disabled = true; Set(OsuConfig.DisplayCityLocation, false).Disabled = true; Set(OsuConfig.DistanceSpacingEnabled, true).Disabled = true; Set(OsuConfig.EditorTip, 0).Disabled = true; Set(OsuConfig.VideoEditor, true).Disabled = true; Set(OsuConfig.EditorDefaultSkin, false).Disabled = true; Set(OsuConfig.EditorSnakingSliders, true).Disabled = true; Set(OsuConfig.EditorHitAnimations, false).Disabled = true; Set(OsuConfig.EditorFollowPoints, true).Disabled = true; Set(OsuConfig.EditorStacking, true).Disabled = true; Set(OsuConfig.ForceSliderRendering, false).Disabled = true; Set(OsuConfig.FpsCounter, false).Disabled = true; Set(OsuConfig.FrameTimeDisplay, false).Disabled = true; Set(OsuConfig.GuideTips, @"").Disabled = true; Set(OsuConfig.CursorRipple, false).Disabled = true; Set(OsuConfig.HighlightWords, string.Empty).Disabled = true; Set(OsuConfig.HighResolution, false).Disabled = true; Set(OsuConfig.HitLighting, true).Disabled = true; Set(OsuConfig.IgnoreBarline, false).Disabled = true; Set(OsuConfig.IgnoreBeatmapSamples, false).Disabled = true; Set(OsuConfig.IgnoreBeatmapSkins, false).Disabled = true; Set(OsuConfig.IgnoreList, string.Empty).Disabled = true; Set(OsuConfig.KeyOverlay, false).Disabled = true; Set(OsuConfig.Language, @"unknown").Disabled = true; Set(OsuConfig.AllowNowPlayingHighlights, false).Disabled = true; Set(OsuConfig.LastVersion, string.Empty).Disabled = true; Set(OsuConfig.LastVersionPermissionsFailed, string.Empty).Disabled = true; Set(OsuConfig.LoadSubmittedThread, true).Disabled = true; Set(OsuConfig.LobbyPlayMode, -1).Disabled = true; Set(OsuConfig.ShowInterface, true).Disabled = true; Set(OsuConfig.ShowInterfaceDuringRelax, false).Disabled = true; Set(OsuConfig.LobbyShowExistingOnly, false).Disabled = true; Set(OsuConfig.LobbyShowFriendsOnly, false).Disabled = true; Set(OsuConfig.LobbyShowFull, false).Disabled = true; Set(OsuConfig.LobbyShowInProgress, true).Disabled = true; Set(OsuConfig.LobbyShowPassworded, true).Disabled = true; Set(OsuConfig.LogPrivateMessages, false).Disabled = true; Set(OsuConfig.LowResolution, false).Disabled = true; //Set(OsuConfig.ManiaSpeed, SpeedMania.SPEED_DEFAULT, SpeedMania.SPEED_MIN, SpeedMania.SPEED_MAX).Disabled = true; Set(OsuConfig.UsePerBeatmapManiaSpeed, true).Disabled = true; Set(OsuConfig.ManiaSpeedBPMScale, true).Disabled = true; Set(OsuConfig.MenuTip, 0).Disabled = true; Set(OsuConfig.MouseDisableWheel, false).Disabled = true; Set(OsuConfig.MouseSpeed, 1, 0.4, 6).Disabled = true; Set(OsuConfig.Offset, 0, -300, 300).Disabled = true; Set(OsuConfig.ScoreMeterScale, 1, 0.5, 2).Disabled = true; //Set(OsuConfig.ScoreMeterScale, 1, 0.5, OsuGame.Tournament ? 10 : 2).Disabled = true; Set(OsuConfig.DistanceSpacing, 0.8, 0.1, 6).Disabled = true; Set(OsuConfig.EditorBeatDivisor, 1, 1, 16).Disabled = true; Set(OsuConfig.EditorGridSize, 32, 4, 32).Disabled = true; Set(OsuConfig.EditorGridSizeDesign, 32, 4, 32).Disabled = true; Set(OsuConfig.CustomFrameLimit, 240, 240, 999).Disabled = true; Set(OsuConfig.MsnIntegration, false).Disabled = true; Set(OsuConfig.MyPcSucks, false).Disabled = true; Set(OsuConfig.NotifyFriends, true).Disabled = true; Set(OsuConfig.NotifySubmittedThread, true).Disabled = true; Set(OsuConfig.PopupDuringGameplay, true).Disabled = true; Set(OsuConfig.ProgressBarType, ProgressBarType.Pie).Disabled = true; Set(OsuConfig.RankType, RankingType.Top).Disabled = true; Set(OsuConfig.RefreshRate, 60).Disabled = true; Set(OsuConfig.OverrideRefreshRate, Get(OsuConfig.RefreshRate) != 60).Disabled = true; //Set(OsuConfig.ScaleMode, ScaleMode.WidescreenConservative).Disabled = true; Set(OsuConfig.ScoreboardVisible, true).Disabled = true; Set(OsuConfig.ScoreMeter, ScoreMeterType.Error).Disabled = true; //Set(OsuConfig.ScoreMeter, OsuGame.Tournament ? ScoreMeterType.Colour : ScoreMeterType.Error).Disabled = true; Set(OsuConfig.ScreenshotId, 0).Disabled = true; Set(OsuConfig.MenuSnow, false).Disabled = true; Set(OsuConfig.MenuTriangles, true).Disabled = true; Set(OsuConfig.SongSelectThumbnails, true).Disabled = true; Set(OsuConfig.ScreenshotFormat, ScreenshotFormat.Jpg).Disabled = true; Set(OsuConfig.ShowReplayComments, true).Disabled = true; Set(OsuConfig.ShowSpectators, true).Disabled = true; Set(OsuConfig.ShowStoryboard, true).Disabled = true; //Set(OsuConfig.Skin, SkinManager.DEFAULT_SKIN).Disabled = true; Set(OsuConfig.SkinSamples, true).Disabled = true; Set(OsuConfig.SkipTablet, false).Disabled = true; Set(OsuConfig.Tablet, false).Disabled = true; Set(OsuConfig.UpdatePending, false).Disabled = true; Set(OsuConfig.UseSkinCursor, false).Disabled = true; Set(OsuConfig.UseTaikoSkin, false).Disabled = true; Set(OsuConfig.Video, true).Disabled = true; Set(OsuConfig.Wiimote, false).Disabled = true; Set(OsuConfig.YahooIntegration, false).Disabled = true; Set(OsuConfig.ForceFrameFlush, false).Disabled = true; Set(OsuConfig.DetectPerformanceIssues, true).Disabled = true; Set(OsuConfig.MenuMusic, true).Disabled = true; Set(OsuConfig.MenuVoice, true).Disabled = true; Set(OsuConfig.RawInput, false).Disabled = true; Set(OsuConfig.AbsoluteToOsuWindow, Get(OsuConfig.RawInput)).Disabled = true; Set(OsuConfig.ShowMenuTips, true).Disabled = true; Set(OsuConfig.HiddenShowFirstApproach, true).Disabled = true; Set(OsuConfig.ComboColourSliderBall, true).Disabled = true; Set(OsuConfig.AlternativeChatFont, false).Disabled = true; Set(OsuConfig.DisplayStarsMaximum, 10.0, 0.0, 10.0).Disabled = true; Set(OsuConfig.DisplayStarsMinimum, 0.0, 0.0, 10.0).Disabled = true; Set(OsuConfig.ReleaseStream, ReleaseStream.Lazer).Disabled = true; Set(OsuConfig.UpdateFailCount, 0).Disabled = true; //Set(OsuConfig.TreeSortMode, TreeGroupMode.Show_All).Disabled = true; //Set(OsuConfig.TreeSortMode2, TreeSortMode.Title).Disabled = true; bool unicodeDefault = false; switch (Get(OsuConfig.Language)) { case @"zh": case @"ja": case @"ko": unicodeDefault = true; break; } Set(OsuConfig.ShowUnicode, unicodeDefault); Set(OsuConfig.PermanentSongInfo, false).Disabled = true; Set(OsuConfig.Ticker, false).Disabled = true; Set(OsuConfig.CompatibilityContext, false).Disabled = true; Set(OsuConfig.CanForceOptimusCompatibility, true).Disabled = true; Set(OsuConfig.ConfineMouse, Get(OsuConfig.ConfineMouseToFullscreen) ? ConfineMouseMode.Fullscreen : ConfineMouseMode.Never).Disabled = true; GetBindable(OsuConfig.SavePassword).ValueChanged += delegate { if (Get(OsuConfig.SavePassword)) Set(OsuConfig.SaveUsername, true); }; GetBindable(OsuConfig.SaveUsername).ValueChanged += delegate { if (!Get(OsuConfig.SaveUsername)) Set(OsuConfig.SavePassword, false); }; #pragma warning restore CS0612 // Type or member is obsolete } //todo: make a UnicodeString class/struct rather than requiring this helper method. public string GetUnicodeString(string nonunicode, string unicode) => Get(OsuConfig.ShowUnicode) ? unicode ?? nonunicode : nonunicode ?? unicode; public OsuConfigManager(BasicStorage storage) : base(storage) { } } public enum OsuConfig { // New osu: PlayMode, Token, // Imported from old osu: BeatmapDirectory, AllowPublicInvites, AutoChatHide, AutomaticDownload, AutomaticDownloadNoVideo, BlockNonFriendPM, Bloom, BloomSoftening, BossKeyFirstActivation, ChatAudibleHighlight, ChatChannels, ChatFilter, ChatHighlightName, ChatMessageNotification, ChatLastChannel, ChatRemoveForeign, ChatSortMode, ComboBurst, ComboFire, ComboFireHeight, ConfirmExit, AutoSendNowPlaying, CursorSize, AutomaticCursorSizing, DimLevel, Display, DisplayCityLocation, DistanceSpacingEnabled, EditorTip, VideoEditor, EditorDefaultSkin, EditorSnakingSliders, EditorHitAnimations, EditorFollowPoints, EditorStacking, ForceSliderRendering, FpsCounter, FrameTimeDisplay, GuideTips, CursorRipple, HighlightWords, HighResolution, HitLighting, IgnoreBarline, IgnoreBeatmapSamples, IgnoreBeatmapSkins, IgnoreList, KeyOverlay, Language, LastPlayMode, AllowNowPlayingHighlights, LastVersion, LastVersionPermissionsFailed, LoadSubmittedThread, LobbyPlayMode, ShowInterface, ShowInterfaceDuringRelax, LobbyShowExistingOnly, LobbyShowFriendsOnly, LobbyShowFull, LobbyShowInProgress, LobbyShowPassworded, LogPrivateMessages, LowResolution, ManiaSpeed, UsePerBeatmapManiaSpeed, ManiaSpeedBPMScale, MenuTip, MouseDisableButtons, MouseDisableWheel, MouseSpeed, Offset, ScoreMeterScale, DistanceSpacing, EditorBeatDivisor, EditorGridSize, EditorGridSizeDesign, CustomFrameLimit, MsnIntegration, MyPcSucks, NotifyFriends, NotifySubmittedThread, PopupDuringGameplay, ProgressBarType, RankType, RefreshRate, OverrideRefreshRate, ScaleMode, ScoreboardVisible, ScoreMeter, ScreenshotId, MenuSnow, MenuTriangles, SongSelectThumbnails, ScreenshotFormat, ShowReplayComments, ShowSpectators, ShowStoryboard, Skin, SkinSamples, SkipTablet, SnakingInSliders, SnakingOutSliders, Tablet, UpdatePending, UserFilter, UseSkinCursor, UseTaikoSkin, Video, Wiimote, YahooIntegration, ForceFrameFlush, DetectPerformanceIssues, MenuMusic, MenuVoice, MenuParallax, RawInput, AbsoluteToOsuWindow, ConfineMouse, [Obsolete] ConfineMouseToFullscreen, ShowMenuTips, HiddenShowFirstApproach, ComboColourSliderBall, AlternativeChatFont, Username, DisplayStarsMaximum, DisplayStarsMinimum, AudioDevice, ReleaseStream, UpdateFailCount, SavePassword, SaveUsername, TreeSortMode, TreeSortMode2, ShowUnicode, PermanentSongInfo, Ticker, CompatibilityContext, CanForceOptimusCompatibility, } }