2020-12-30 05:29:51 +00:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2019-01-25 10:17:48 +00:00
// See the LICENCE file in the repository root for full licence text.
2018-04-13 09:19:50 +00:00
2020-11-11 03:19:01 +00:00
using System ;
2020-11-11 03:54:39 +00:00
using System.Diagnostics ;
2022-11-08 09:24:57 +00:00
using osu.Framework.Bindables ;
2016-08-26 03:28:23 +00:00
using osu.Framework.Configuration ;
2018-05-02 10:37:47 +00:00
using osu.Framework.Configuration.Tracking ;
2019-01-04 05:18:29 +00:00
using osu.Framework.Extensions ;
2021-10-11 02:35:25 +00:00
using osu.Framework.Extensions.LocalisationExtensions ;
2021-10-11 08:02:26 +00:00
using osu.Framework.Localisation ;
2016-10-31 18:44:20 +00:00
using osu.Framework.Platform ;
2022-04-02 15:36:49 +00:00
using osu.Game.Beatmaps.Drawables.Cards ;
2020-08-16 01:34:28 +00:00
using osu.Game.Input ;
2020-11-11 03:54:39 +00:00
using osu.Game.Input.Bindings ;
2021-10-11 02:35:25 +00:00
using osu.Game.Localisation ;
2017-05-12 04:54:02 +00:00
using osu.Game.Overlays ;
2022-06-21 11:03:46 +00:00
using osu.Game.Overlays.Mods.Input ;
2018-06-07 18:17:12 +00:00
using osu.Game.Rulesets.Scoring ;
2017-04-24 10:25:27 +00:00
using osu.Game.Screens.Select ;
2019-08-23 11:15:38 +00:00
using osu.Game.Screens.Select.Filter ;
2021-12-01 03:45:47 +00:00
using osu.Game.Skinning ;
2018-04-13 09:19:50 +00:00
2016-08-26 03:28:23 +00:00
namespace osu.Game.Configuration
{
2022-11-08 09:24:57 +00:00
public class OsuConfigManager : IniConfigManager < OsuSetting > , IGameplaySettings
2016-08-26 03:28:23 +00:00
{
2022-08-22 08:03:20 +00:00
public OsuConfigManager ( Storage storage )
: base ( storage )
{
Migrate ( ) ;
}
2016-08-26 03:28:23 +00:00
protected override void InitialiseDefaults ( )
{
2017-05-02 08:45:22 +00:00
// UI/selection defaults
2021-11-22 08:40:43 +00:00
SetDefault ( OsuSetting . Ruleset , string . Empty ) ;
2022-09-27 08:41:55 +00:00
SetDefault ( OsuSetting . Skin , SkinInfo . ARGON_SKIN . ToString ( ) ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . BeatmapDetailTab , PlayBeatmapDetailArea . TabType . Details ) ;
SetDefault ( OsuSetting . BeatmapDetailModsFilter , false ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ShowConvertedBeatmaps , true ) ;
SetDefault ( OsuSetting . DisplayStarsMinimum , 0.0 , 0 , 10 , 0.1 ) ;
SetDefault ( OsuSetting . DisplayStarsMaximum , 10.1 , 0 , 10.1 , 0.1 ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . SongSelectGroupingMode , GroupMode . All ) ;
SetDefault ( OsuSetting . SongSelectSortingMode , SortMode . Title ) ;
2019-08-23 11:15:38 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . RandomSelectAlgorithm , RandomSelectAlgorithm . RandomPermutation ) ;
2022-06-21 11:03:46 +00:00
SetDefault ( OsuSetting . ModSelectHotkeyStyle , ModSelectHotkeyStyle . Sequential ) ;
2018-04-13 09:19:50 +00:00
2022-05-30 08:54:09 +00:00
SetDefault ( OsuSetting . ChatDisplayHeight , ChatOverlay . DEFAULT_HEIGHT , 0.2f , 1f ) ;
2018-04-13 09:19:50 +00:00
2022-04-02 15:36:49 +00:00
SetDefault ( OsuSetting . BeatmapListingCardSize , BeatmapCardSize . Normal ) ;
2023-01-24 22:30:07 +00:00
SetDefault ( OsuSetting . ProfileCoverExpanded , true ) ;
2022-03-26 10:18:41 +00:00
SetDefault ( OsuSetting . ToolbarClockDisplayMode , ToolbarClockDisplayMode . Full ) ;
2023-01-25 07:28:38 +00:00
SetDefault ( OsuSetting . SongSelectBackgroundBlur , true ) ;
2023-01-23 12:53:31 +00:00
2017-05-02 08:45:22 +00:00
// Online settings
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . Username , string . Empty ) ;
SetDefault ( OsuSetting . Token , string . Empty ) ;
2018-04-13 09:19:50 +00:00
2023-09-19 19:37:44 +00:00
#pragma warning disable CS0618 // Type or member is obsolete
// this default set MUST remain despite the setting being deprecated, because `SetDefault()` calls are implicitly used to declare the type returned for the lookup.
// if this is removed, the setting will be interpreted as a string, and `Migrate()` will fail due to cast failure.
// can be removed 20240618
SetDefault ( OsuSetting . AutomaticallyDownloadWhenSpectating , false ) ;
#pragma warning restore CS0618 // Type or member is obsolete
2023-09-18 12:46:24 +00:00
SetDefault ( OsuSetting . AutomaticallyDownloadMissingBeatmaps , false ) ;
2020-10-28 10:03:01 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . SavePassword , false ) . ValueChanged + = enabled = >
2017-05-02 08:45:22 +00:00
{
2021-03-17 07:10:16 +00:00
if ( enabled . NewValue ) SetValue ( OsuSetting . SaveUsername , true ) ;
2017-05-02 08:45:22 +00:00
} ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . SaveUsername , true ) . ValueChanged + = enabled = >
2017-05-02 08:45:22 +00:00
{
2021-03-17 07:10:16 +00:00
if ( ! enabled . NewValue ) SetValue ( OsuSetting . SavePassword , false ) ;
2017-05-02 08:45:22 +00:00
} ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ExternalLinkWarning , true ) ;
SetDefault ( OsuSetting . PreferNoVideo , false ) ;
2018-10-22 20:57:37 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ShowOnlineExplicitContent , false ) ;
2018-10-22 20:57:37 +00:00
2021-06-11 07:37:31 +00:00
SetDefault ( OsuSetting . NotifyOnUsernameMentioned , true ) ;
SetDefault ( OsuSetting . NotifyOnPrivateMessage , true ) ;
2019-12-15 23:45:33 +00:00
2017-05-02 08:45:22 +00:00
// Audio
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . VolumeInactive , 0.25 , 0 , 1 , 0.01 ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . MenuVoice , true ) ;
SetDefault ( OsuSetting . MenuMusic , true ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . AudioOffset , 0 , - 500.0 , 500.0 , 1 ) ;
2018-04-13 09:19:50 +00:00
2017-05-02 08:45:22 +00:00
// Input
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . MenuCursorSize , 1.0f , 0.5f , 2f , 0.01f ) ;
SetDefault ( OsuSetting . GameplayCursorSize , 1.0f , 0.1f , 2f , 0.01f ) ;
2022-07-26 05:07:33 +00:00
SetDefault ( OsuSetting . GameplayCursorDuringTouch , false ) ;
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . AutoCursorSize , false ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . MouseDisableButtons , false ) ;
SetDefault ( OsuSetting . MouseDisableWheel , false ) ;
SetDefault ( OsuSetting . ConfineMouseMode , OsuConfineMouseMode . DuringGameplay ) ;
2018-04-13 09:19:50 +00:00
2023-11-06 19:42:40 +00:00
SetDefault ( OsuSetting . GameplayDisableTaps , false ) ;
2017-05-02 08:45:22 +00:00
// Graphics
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ShowFpsDisplay , false ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ShowStoryboard , true ) ;
SetDefault ( OsuSetting . BeatmapSkins , true ) ;
SetDefault ( OsuSetting . BeatmapColours , true ) ;
SetDefault ( OsuSetting . BeatmapHitsounds , true ) ;
2018-04-25 07:15:23 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . CursorRotation , true ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . MenuParallax , true ) ;
2018-04-13 09:19:50 +00:00
2022-04-07 09:13:23 +00:00
// See https://stackoverflow.com/a/63307411 for default sourcing.
2022-11-11 13:10:27 +00:00
SetDefault ( OsuSetting . Prefer24HourTime , ! CultureInfoHelper . SystemCulture . DateTimeFormat . ShortTimePattern . Contains ( @"tt" ) ) ;
2022-04-05 20:21:28 +00:00
2017-05-02 09:40:30 +00:00
// Gameplay
2021-11-28 13:06:53 +00:00
SetDefault ( OsuSetting . PositionalHitsoundsLevel , 0.2f , 0 , 1 ) ;
2022-10-07 09:46:26 +00:00
SetDefault ( OsuSetting . DimLevel , 0.7 , 0 , 1 , 0.01 ) ;
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . BlurLevel , 0 , 0 , 1 , 0.01 ) ;
SetDefault ( OsuSetting . LightenDuringBreaks , true ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . HitLighting , true ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . HUDVisibilityMode , HUDVisibilityMode . Always ) ;
SetDefault ( OsuSetting . ShowHealthDisplayWhenCantFail , true ) ;
SetDefault ( OsuSetting . FadePlayfieldWhenHealthLow , true ) ;
SetDefault ( OsuSetting . KeyOverlay , false ) ;
2023-07-05 15:46:28 +00:00
SetDefault ( OsuSetting . ReplaySettingsOverlay , true ) ;
2022-09-26 12:07:43 +00:00
SetDefault ( OsuSetting . GameplayLeaderboard , true ) ;
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . AlwaysPlayFirstComboBreak , true ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . FloatingComments , false ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ScoreDisplayMode , ScoringMode . Standardised ) ;
2018-06-07 18:17:12 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . IncreaseFirstObjectVisibility , true ) ;
SetDefault ( OsuSetting . GameplayDisableWinKey , true ) ;
2018-04-25 08:15:53 +00:00
2017-05-02 09:40:30 +00:00
// Update
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ReleaseStream , ReleaseStream . Lazer ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . Version , string . Empty ) ;
2018-04-13 09:19:50 +00:00
2022-04-19 07:59:25 +00:00
SetDefault ( OsuSetting . ShowFirstRunSetup , true ) ;
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ScreenshotFormat , ScreenshotFormat . Jpg ) ;
SetDefault ( OsuSetting . ScreenshotCaptureMenuCursor , false ) ;
2018-04-13 09:19:50 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . SongSelectRightMouseScroll , false ) ;
2018-04-13 10:50:37 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . Scaling , ScalingMode . Off ) ;
2022-10-28 04:52:45 +00:00
SetDefault ( OsuSetting . SafeAreaConsiderations , true ) ;
2023-03-29 13:55:25 +00:00
SetDefault ( OsuSetting . ScalingBackgroundDim , 0.9f , 0.5f , 1f ) ;
2019-01-04 04:29:37 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ScalingSizeX , 0.8f , 0.2f , 1f ) ;
SetDefault ( OsuSetting . ScalingSizeY , 0.8f , 0.2f , 1f ) ;
2019-01-04 04:29:37 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . ScalingPositionX , 0.5f , 0f , 1f ) ;
SetDefault ( OsuSetting . ScalingPositionY , 0.5f , 0f , 1f ) ;
2019-01-04 04:29:37 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . UIScale , 1f , 0.8f , 1.6f , 0.01f ) ;
2019-01-09 10:01:33 +00:00
2022-03-04 03:21:05 +00:00
SetDefault ( OsuSetting . UIHoldActivationDelay , 200.0 , 0.0 , 500.0 , 50.0 ) ;
2019-08-09 11:05:28 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . IntroSequence , IntroSequence . Triangles ) ;
2019-09-19 05:04:51 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . MenuBackgroundSource , BackgroundSource . Skin ) ;
SetDefault ( OsuSetting . SeasonalBackgroundMode , SeasonalBackgroundMode . Sometimes ) ;
2019-09-24 09:42:06 +00:00
2021-03-17 07:10:16 +00:00
SetDefault ( OsuSetting . DiscordRichPresence , DiscordRichPresenceMode . Full ) ;
2020-12-30 05:29:51 +00:00
2022-11-11 09:29:15 +00:00
SetDefault ( OsuSetting . EditorDim , 0.25f , 0f , 0.75f , 0.25f ) ;
SetDefault ( OsuSetting . EditorWaveformOpacity , 0.25f , 0f , 1f , 0.25f ) ;
SetDefault ( OsuSetting . EditorShowHitMarkers , true ) ;
2023-02-19 14:06:40 +00:00
SetDefault ( OsuSetting . EditorAutoSeekOnPlacement , true ) ;
2023-06-09 06:54:22 +00:00
SetDefault ( OsuSetting . EditorLimitedDistanceSnap , false ) ;
2023-10-17 07:01:00 +00:00
SetDefault ( OsuSetting . EditorShowSpeedChanges , false ) ;
2022-07-05 12:42:35 +00:00
SetDefault ( OsuSetting . LastProcessedMetadataId , - 1 ) ;
2022-10-14 05:37:24 +00:00
2022-11-02 09:14:20 +00:00
SetDefault ( OsuSetting . ComboColourNormalisationAmount , 0.2f , 0f , 1f , 0.01f ) ;
2017-01-28 10:10:05 +00:00
}
2018-04-13 09:19:50 +00:00
2022-08-22 08:03:20 +00:00
protected override bool CheckLookupContainsPrivateInformation ( OsuSetting lookup )
2022-05-11 05:03:16 +00:00
{
2022-08-22 08:03:20 +00:00
switch ( lookup )
2022-05-11 05:03:16 +00:00
{
case OsuSetting . Token :
return true ;
}
return false ;
}
2020-03-05 04:18:42 +00:00
public void Migrate ( )
2019-01-04 06:34:32 +00:00
{
2020-03-05 04:18:42 +00:00
// arrives as 2020.123.0
2021-10-27 04:04:41 +00:00
string rawVersion = Get < string > ( OsuSetting . Version ) ;
2020-03-05 04:18:42 +00:00
if ( rawVersion . Length < 6 )
return ;
2021-10-27 04:04:41 +00:00
string [ ] pieces = rawVersion . Split ( '.' ) ;
2020-03-05 04:18:42 +00:00
2020-03-05 06:36:36 +00:00
// on a fresh install or when coming from a non-release build, execution will end here.
// we don't want to run migrations in such cases.
2020-03-05 04:18:42 +00:00
if ( ! int . TryParse ( pieces [ 0 ] , out int year ) ) return ;
if ( ! int . TryParse ( pieces [ 1 ] , out int monthDay ) ) return ;
2022-10-28 04:09:28 +00:00
// ReSharper disable once UnusedVariable
2020-03-05 04:18:42 +00:00
int combined = ( year * 10000 ) + monthDay ;
2022-01-03 03:46:20 +00:00
2022-10-28 04:09:28 +00:00
// migrations can be added here using a condition like:
// if (combined < 20220103) { performMigration() }
2023-09-18 12:46:24 +00:00
if ( combined < 20230918 )
{
#pragma warning disable CS0618 // Type or member is obsolete
2023-09-19 19:37:44 +00:00
SetValue ( OsuSetting . AutomaticallyDownloadMissingBeatmaps , Get < bool > ( OsuSetting . AutomaticallyDownloadWhenSpectating ) ) ; // can be removed 20240618
2023-09-18 12:46:24 +00:00
#pragma warning restore CS0618 // Type or member is obsolete
}
2016-10-31 18:44:20 +00:00
}
2018-05-02 10:37:47 +00:00
2020-11-11 03:54:39 +00:00
public override TrackedSettings CreateTrackedSettings ( )
2019-01-04 06:34:32 +00:00
{
2020-11-11 03:54:39 +00:00
// these need to be assigned in normal game startup scenarios.
Debug . Assert ( LookupKeyBindings ! = null ) ;
Debug . Assert ( LookupSkinName ! = null ) ;
return new TrackedSettings
2020-11-11 03:19:01 +00:00
{
2022-07-20 12:05:20 +00:00
new TrackedSetting < bool > ( OsuSetting . ShowFpsDisplay , state = > new SettingDescription (
rawValue : state ,
name : GlobalActionKeyBindingStrings . ToggleFPSCounter ,
value : state ? CommonStrings . Enabled . ToLower ( ) : CommonStrings . Disabled . ToLower ( ) ,
shortcut : LookupKeyBindings ( GlobalAction . ToggleFPSDisplay ) )
) ,
2021-10-19 08:00:51 +00:00
new TrackedSetting < bool > ( OsuSetting . MouseDisableButtons , disabledState = > new SettingDescription (
rawValue : ! disabledState ,
2023-11-06 20:10:04 +00:00
name : GlobalActionKeyBindingStrings . ToggleGameplayMouseButtons ,
2021-10-19 08:00:51 +00:00
value : disabledState ? CommonStrings . Disabled . ToLower ( ) : CommonStrings . Enabled . ToLower ( ) ,
shortcut : LookupKeyBindings ( GlobalAction . ToggleGameplayMouseButtons ) )
) ,
2023-08-16 07:17:56 +00:00
new TrackedSetting < bool > ( OsuSetting . GameplayLeaderboard , state = > new SettingDescription (
rawValue : state ,
name : GlobalActionKeyBindingStrings . ToggleInGameLeaderboard ,
value : state ? CommonStrings . Enabled . ToLower ( ) : CommonStrings . Disabled . ToLower ( ) ,
shortcut : LookupKeyBindings ( GlobalAction . ToggleInGameLeaderboard ) )
) ,
2021-10-19 08:22:50 +00:00
new TrackedSetting < HUDVisibilityMode > ( OsuSetting . HUDVisibilityMode , visibilityMode = > new SettingDescription (
rawValue : visibilityMode ,
2021-10-19 08:00:51 +00:00
name : GameplaySettingsStrings . HUDVisibilityMode ,
2021-10-19 08:22:50 +00:00
value : visibilityMode . GetLocalisableDescription ( ) ,
2021-10-19 08:00:51 +00:00
shortcut : new TranslatableString ( @"_" , @"{0}: {1} {2}: {3}" ,
GlobalActionKeyBindingStrings . ToggleInGameInterface ,
LookupKeyBindings ( GlobalAction . ToggleInGameInterface ) ,
GlobalActionKeyBindingStrings . HoldForHUD ,
LookupKeyBindings ( GlobalAction . HoldForHUD ) ) )
) ,
new TrackedSetting < ScalingMode > ( OsuSetting . Scaling , scalingMode = > new SettingDescription (
rawValue : scalingMode ,
name : GraphicsSettingsStrings . ScreenScaling ,
value : scalingMode . GetLocalisableDescription ( )
)
) ,
2021-11-23 07:04:55 +00:00
new TrackedSetting < string > ( OsuSetting . Skin , skin = >
2020-11-11 03:54:39 +00:00
{
2021-11-23 07:04:55 +00:00
string skinName = string . Empty ;
if ( Guid . TryParse ( skin , out var id ) )
2023-06-23 15:59:36 +00:00
skinName = LookupSkinName ( id ) ;
2021-10-19 08:00:51 +00:00
return new SettingDescription (
rawValue : skinName ,
name : SkinSettingsStrings . SkinSectionHeader ,
value : skinName ,
2021-10-22 22:45:48 +00:00
shortcut : new TranslatableString ( @"_" , @"{0}: {1}" ,
GlobalActionKeyBindingStrings . RandomSkin ,
LookupKeyBindings ( GlobalAction . RandomSkin ) )
2021-10-19 08:00:51 +00:00
) ;
2021-10-11 02:55:02 +00:00
} ) ,
2021-10-19 08:00:51 +00:00
new TrackedSetting < float > ( OsuSetting . UIScale , scale = > new SettingDescription (
rawValue : scale ,
name : GraphicsSettingsStrings . UIScaling ,
value : $"{scale:N2}x"
// TODO: implement lookup for framework platform key bindings
)
) ,
2020-11-11 03:54:39 +00:00
} ;
}
2022-03-04 03:31:57 +00:00
public Func < Guid , string > LookupSkinName { private get ; set ; } = _ = > @"unknown" ;
2020-11-11 03:19:01 +00:00
2022-03-04 03:31:57 +00:00
public Func < GlobalAction , LocalisableString > LookupKeyBindings { get ; set ; } = _ = > @"unknown" ;
2022-11-08 09:24:57 +00:00
IBindable < float > IGameplaySettings . ComboColourNormalisationAmount = > GetOriginalBindable < float > ( OsuSetting . ComboColourNormalisationAmount ) ;
IBindable < float > IGameplaySettings . PositionalHitsoundsLevel = > GetOriginalBindable < float > ( OsuSetting . PositionalHitsoundsLevel ) ;
2016-08-26 03:28:23 +00:00
}
2018-04-13 09:19:50 +00:00
2021-08-16 07:59:59 +00:00
// IMPORTANT: These are used in user configuration files.
// The naming of these keys should not be changed once they are deployed in a release, unless migration logic is also added.
2017-05-15 01:56:27 +00:00
public enum OsuSetting
2016-08-26 03:28:23 +00:00
{
2017-04-14 20:22:41 +00:00
Ruleset ,
2016-11-02 23:37:52 +00:00
Token ,
2017-03-21 16:16:23 +00:00
MenuCursorSize ,
2017-03-17 17:40:03 +00:00
GameplayCursorSize ,
2017-05-13 00:46:37 +00:00
AutoCursorSize ,
2022-07-26 05:07:33 +00:00
GameplayCursorDuringTouch ,
2016-11-02 23:37:52 +00:00
DimLevel ,
2017-12-26 01:11:49 +00:00
BlurLevel ,
2022-11-11 09:29:15 +00:00
EditorDim ,
2019-12-10 12:10:35 +00:00
LightenDuringBreaks ,
2017-09-14 13:44:36 +00:00
ShowStoryboard ,
2016-11-02 23:37:52 +00:00
KeyOverlay ,
2022-09-26 12:07:43 +00:00
GameplayLeaderboard ,
2022-01-03 03:46:20 +00:00
PositionalHitsoundsLevel ,
2020-07-14 11:11:54 +00:00
AlwaysPlayFirstComboBreak ,
2017-05-17 12:39:26 +00:00
FloatingComments ,
2020-07-22 03:41:06 +00:00
HUDVisibilityMode ,
2022-04-27 09:10:58 +00:00
2019-07-06 20:30:30 +00:00
ShowHealthDisplayWhenCantFail ,
2020-03-30 10:59:39 +00:00
FadePlayfieldWhenHealthLow ,
2023-11-05 11:40:06 +00:00
/// <summary>
2023-11-06 19:42:40 +00:00
/// Disables mouse buttons clicks during gameplay.
2023-11-05 11:40:06 +00:00
/// </summary>
2016-11-02 23:37:52 +00:00
MouseDisableButtons ,
MouseDisableWheel ,
2020-08-16 01:34:28 +00:00
ConfineMouseMode ,
2022-03-03 15:14:24 +00:00
/// <summary>
/// Globally applied audio offset.
/// This is added to the audio track's current time. Higher values will cause gameplay to occur earlier, relative to the audio track.
/// </summary>
2017-04-21 07:19:40 +00:00
AudioOffset ,
2022-03-03 15:14:24 +00:00
2018-01-31 09:11:38 +00:00
VolumeInactive ,
2016-11-02 23:37:52 +00:00
MenuMusic ,
MenuVoice ,
2017-09-16 22:47:55 +00:00
CursorRotation ,
2016-11-02 23:37:52 +00:00
MenuParallax ,
2022-04-05 20:21:28 +00:00
Prefer24HourTime ,
2017-04-24 10:25:27 +00:00
BeatmapDetailTab ,
2020-09-16 04:33:52 +00:00
BeatmapDetailModsFilter ,
2016-11-02 23:37:52 +00:00
Username ,
ReleaseStream ,
SavePassword ,
SaveUsername ,
2017-05-02 10:40:30 +00:00
DisplayStarsMinimum ,
DisplayStarsMaximum ,
2019-08-24 08:34:54 +00:00
SongSelectGroupingMode ,
SongSelectSortingMode ,
2017-12-13 09:10:32 +00:00
RandomSelectAlgorithm ,
2022-06-21 11:03:46 +00:00
ModSelectHotkeyStyle ,
2017-05-12 04:54:02 +00:00
ShowFpsDisplay ,
2017-08-22 10:41:39 +00:00
ChatDisplayHeight ,
2022-04-02 15:36:49 +00:00
BeatmapListingCardSize ,
2022-03-26 10:18:41 +00:00
ToolbarClockDisplayMode ,
2023-01-25 07:28:38 +00:00
SongSelectBackgroundBlur ,
2017-11-24 09:34:20 +00:00
Version ,
2022-04-19 07:59:25 +00:00
ShowFirstRunSetup ,
2018-01-08 02:34:37 +00:00
ShowConvertedBeatmaps ,
2018-03-10 18:59:20 +00:00
Skin ,
2018-04-13 10:50:37 +00:00
ScreenshotFormat ,
2018-04-18 09:10:40 +00:00
ScreenshotCaptureMenuCursor ,
2018-04-20 15:17:57 +00:00
SongSelectRightMouseScroll ,
2018-04-25 07:15:23 +00:00
BeatmapSkins ,
2021-01-13 05:09:22 +00:00
BeatmapColours ,
2018-04-25 08:15:53 +00:00
BeatmapHitsounds ,
2018-06-07 18:17:12 +00:00
IncreaseFirstObjectVisibility ,
2018-10-22 20:57:37 +00:00
ScoreDisplayMode ,
2019-01-04 04:29:37 +00:00
ExternalLinkWarning ,
2020-04-11 11:08:16 +00:00
PreferNoVideo ,
2019-01-04 04:29:37 +00:00
Scaling ,
ScalingPositionX ,
ScalingPositionY ,
ScalingSizeX ,
2019-01-09 10:01:33 +00:00
ScalingSizeY ,
2023-03-29 13:55:25 +00:00
ScalingBackgroundDim ,
2019-08-09 11:05:28 +00:00
UIScale ,
2019-12-15 23:45:33 +00:00
IntroSequence ,
2021-06-11 07:37:31 +00:00
NotifyOnUsernameMentioned ,
NotifyOnPrivateMessage ,
2019-09-19 11:05:14 +00:00
UIHoldActivationDelay ,
2019-09-24 09:42:06 +00:00
HitLighting ,
2020-06-30 11:12:33 +00:00
MenuBackgroundSource ,
2020-08-01 17:44:30 +00:00
GameplayDisableWinKey ,
2020-10-31 07:22:49 +00:00
SeasonalBackgroundMode ,
2020-11-03 07:01:14 +00:00
EditorWaveformOpacity ,
2022-11-11 09:29:15 +00:00
EditorShowHitMarkers ,
2023-02-19 14:06:40 +00:00
EditorAutoSeekOnPlacement ,
2020-12-30 05:29:51 +00:00
DiscordRichPresence ,
2023-09-18 12:46:24 +00:00
[Obsolete($"Use {nameof(AutomaticallyDownloadMissingBeatmaps)} instead.")] // can be removed 20240318
2020-10-28 10:03:01 +00:00
AutomaticallyDownloadWhenSpectating ,
2023-09-18 12:46:24 +00:00
2021-01-17 13:40:24 +00:00
ShowOnlineExplicitContent ,
2022-10-05 08:50:36 +00:00
LastProcessedMetadataId ,
2022-10-28 04:52:45 +00:00
SafeAreaConsiderations ,
2022-11-02 09:14:20 +00:00
ComboColourNormalisationAmount ,
2023-01-24 22:30:07 +00:00
ProfileCoverExpanded ,
2023-07-05 15:46:28 +00:00
EditorLimitedDistanceSnap ,
2023-09-18 12:46:24 +00:00
ReplaySettingsOverlay ,
AutomaticallyDownloadMissingBeatmaps ,
2023-11-06 19:42:40 +00:00
EditorShowSpeedChanges ,
GameplayDisableTaps ,
2016-08-26 03:28:23 +00:00
}
}