2020-12-30 13:29:51 +08:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2019-01-25 18:17:48 +08:00
// See the LICENCE file in the repository root for full licence text.
2018-04-13 17:19:50 +08:00
2020-11-11 11:19:01 +08:00
using System ;
2020-11-11 11:54:39 +08:00
using System.Diagnostics ;
2022-11-08 17:24:57 +08:00
using osu.Framework.Bindables ;
2016-08-26 11:28:23 +08:00
using osu.Framework.Configuration ;
2018-05-02 18:37:47 +08:00
using osu.Framework.Configuration.Tracking ;
2019-01-04 13:18:29 +08:00
using osu.Framework.Extensions ;
2021-10-11 10:35:25 +08:00
using osu.Framework.Extensions.LocalisationExtensions ;
2021-10-11 16:02:26 +08:00
using osu.Framework.Localisation ;
2016-11-01 02:44:20 +08:00
using osu.Framework.Platform ;
2022-04-02 23:36:49 +08:00
using osu.Game.Beatmaps.Drawables.Cards ;
2020-08-16 09:34:28 +08:00
using osu.Game.Input ;
2020-11-11 11:54:39 +08:00
using osu.Game.Input.Bindings ;
2021-10-11 10:35:25 +08:00
using osu.Game.Localisation ;
2017-05-12 12:54:02 +08:00
using osu.Game.Overlays ;
2022-06-21 19:03:46 +08:00
using osu.Game.Overlays.Mods.Input ;
2018-06-08 02:17:12 +08:00
using osu.Game.Rulesets.Scoring ;
2024-01-15 13:30:27 +08:00
using osu.Game.Screens.OnlinePlay.Lounge.Components ;
2017-04-24 18:25:27 +08:00
using osu.Game.Screens.Select ;
2019-08-23 19:15:38 +08:00
using osu.Game.Screens.Select.Filter ;
2021-12-01 11:45:47 +08:00
using osu.Game.Skinning ;
2024-01-02 21:04:40 +08:00
using osu.Game.Users ;
2018-04-13 17:19:50 +08:00
2016-08-26 11:28:23 +08:00
namespace osu.Game.Configuration
{
2022-11-08 17:24:57 +08:00
public class OsuConfigManager : IniConfigManager < OsuSetting > , IGameplaySettings
2016-08-26 11:28:23 +08:00
{
2022-08-22 16:03:20 +08:00
public OsuConfigManager ( Storage storage )
: base ( storage )
{
Migrate ( ) ;
}
2016-08-26 11:28:23 +08:00
protected override void InitialiseDefaults ( )
{
2017-05-02 16:45:22 +08:00
// UI/selection defaults
2021-11-22 16:40:43 +08:00
SetDefault ( OsuSetting . Ruleset , string . Empty ) ;
2022-09-27 16:41:55 +08:00
SetDefault ( OsuSetting . Skin , SkinInfo . ARGON_SKIN . ToString ( ) ) ;
2018-04-13 17:19:50 +08:00
2023-12-19 18:31:05 +08:00
SetDefault ( OsuSetting . BeatmapDetailTab , PlayBeatmapDetailArea . TabType . Local ) ;
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . BeatmapDetailModsFilter , false ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08: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 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . SongSelectGroupingMode , GroupMode . All ) ;
SetDefault ( OsuSetting . SongSelectSortingMode , SortMode . Title ) ;
2019-08-23 19:15:38 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . RandomSelectAlgorithm , RandomSelectAlgorithm . RandomPermutation ) ;
2022-06-21 19:03:46 +08:00
SetDefault ( OsuSetting . ModSelectHotkeyStyle , ModSelectHotkeyStyle . Sequential ) ;
2023-12-14 16:23:03 +08:00
SetDefault ( OsuSetting . ModSelectTextSearchStartsActive , true ) ;
2018-04-13 17:19:50 +08:00
2022-05-30 16:54:09 +08:00
SetDefault ( OsuSetting . ChatDisplayHeight , ChatOverlay . DEFAULT_HEIGHT , 0.2f , 1f ) ;
2018-04-13 17:19:50 +08:00
2022-04-02 23:36:49 +08:00
SetDefault ( OsuSetting . BeatmapListingCardSize , BeatmapCardSize . Normal ) ;
2023-01-25 06:30:07 +08:00
SetDefault ( OsuSetting . ProfileCoverExpanded , true ) ;
2022-03-26 18:18:41 +08:00
SetDefault ( OsuSetting . ToolbarClockDisplayMode , ToolbarClockDisplayMode . Full ) ;
2023-01-25 15:28:38 +08:00
SetDefault ( OsuSetting . SongSelectBackgroundBlur , true ) ;
2023-01-23 20:53:31 +08:00
2017-05-02 16:45:22 +08:00
// Online settings
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . Username , string . Empty ) ;
SetDefault ( OsuSetting . Token , string . Empty ) ;
2018-04-13 17:19:50 +08:00
2023-09-20 03:37:44 +08: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 20:46:24 +08:00
SetDefault ( OsuSetting . AutomaticallyDownloadMissingBeatmaps , false ) ;
2020-10-28 18:03:01 +08:00
2024-03-12 20:14:50 +08:00
SetDefault ( OsuSetting . SavePassword , true ) . ValueChanged + = enabled = >
2017-05-02 16:45:22 +08:00
{
2024-02-22 16:44:59 +08:00
if ( enabled . NewValue )
SetValue ( OsuSetting . SaveUsername , true ) ;
else
GetBindable < string > ( OsuSetting . Token ) . SetDefault ( ) ;
2017-05-02 16:45:22 +08:00
} ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . SaveUsername , true ) . ValueChanged + = enabled = >
2017-05-02 16:45:22 +08:00
{
2024-02-22 16:44:59 +08:00
if ( ! enabled . NewValue )
{
GetBindable < string > ( OsuSetting . Username ) . SetDefault ( ) ;
SetValue ( OsuSetting . SavePassword , false ) ;
}
2017-05-02 16:45:22 +08:00
} ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ExternalLinkWarning , true ) ;
SetDefault ( OsuSetting . PreferNoVideo , false ) ;
2018-10-23 04:57:37 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ShowOnlineExplicitContent , false ) ;
2018-10-23 04:57:37 +08:00
2021-06-11 15:37:31 +08:00
SetDefault ( OsuSetting . NotifyOnUsernameMentioned , true ) ;
SetDefault ( OsuSetting . NotifyOnPrivateMessage , true ) ;
2019-12-16 07:45:33 +08:00
2017-05-02 16:45:22 +08:00
// Audio
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . VolumeInactive , 0.25 , 0 , 1 , 0.01 ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . MenuVoice , true ) ;
SetDefault ( OsuSetting . MenuMusic , true ) ;
2023-12-28 15:05:20 +08:00
SetDefault ( OsuSetting . MenuTips , true ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . AudioOffset , 0 , - 500.0 , 500.0 , 1 ) ;
2018-04-13 17:19:50 +08:00
2017-05-02 16:45:22 +08:00
// Input
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . MenuCursorSize , 1.0f , 0.5f , 2f , 0.01f ) ;
SetDefault ( OsuSetting . GameplayCursorSize , 1.0f , 0.1f , 2f , 0.01f ) ;
2022-07-26 13:07:33 +08:00
SetDefault ( OsuSetting . GameplayCursorDuringTouch , false ) ;
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . AutoCursorSize , false ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . MouseDisableButtons , false ) ;
SetDefault ( OsuSetting . MouseDisableWheel , false ) ;
SetDefault ( OsuSetting . ConfineMouseMode , OsuConfineMouseMode . DuringGameplay ) ;
2018-04-13 17:19:50 +08:00
2023-11-07 07:13:46 +08:00
SetDefault ( OsuSetting . TouchDisableGameplayTaps , false ) ;
2023-11-07 03:42:40 +08:00
2017-05-02 16:45:22 +08:00
// Graphics
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ShowFpsDisplay , false ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ShowStoryboard , true ) ;
SetDefault ( OsuSetting . BeatmapSkins , true ) ;
SetDefault ( OsuSetting . BeatmapColours , true ) ;
SetDefault ( OsuSetting . BeatmapHitsounds , true ) ;
2018-04-25 15:15:23 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . CursorRotation , true ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . MenuParallax , true ) ;
2018-04-13 17:19:50 +08:00
2022-04-07 17:13:23 +08:00
// See https://stackoverflow.com/a/63307411 for default sourcing.
2022-11-11 21:10:27 +08:00
SetDefault ( OsuSetting . Prefer24HourTime , ! CultureInfoHelper . SystemCulture . DateTimeFormat . ShortTimePattern . Contains ( @"tt" ) ) ;
2022-04-06 04:21:28 +08:00
2017-05-02 17:40:30 +08:00
// Gameplay
2021-11-28 21:06:53 +08:00
SetDefault ( OsuSetting . PositionalHitsoundsLevel , 0.2f , 0 , 1 ) ;
2022-10-07 17:46:26 +08:00
SetDefault ( OsuSetting . DimLevel , 0.7 , 0 , 1 , 0.01 ) ;
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . BlurLevel , 0 , 0 , 1 , 0.01 ) ;
SetDefault ( OsuSetting . LightenDuringBreaks , true ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . HitLighting , true ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . HUDVisibilityMode , HUDVisibilityMode . Always ) ;
SetDefault ( OsuSetting . ShowHealthDisplayWhenCantFail , true ) ;
SetDefault ( OsuSetting . FadePlayfieldWhenHealthLow , true ) ;
SetDefault ( OsuSetting . KeyOverlay , false ) ;
2023-07-05 23:46:28 +08:00
SetDefault ( OsuSetting . ReplaySettingsOverlay , true ) ;
2024-01-18 14:08:24 +08:00
SetDefault ( OsuSetting . ReplayPlaybackControlsExpanded , true ) ;
2022-09-26 20:07:43 +08:00
SetDefault ( OsuSetting . GameplayLeaderboard , true ) ;
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . AlwaysPlayFirstComboBreak , true ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . FloatingComments , false ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ScoreDisplayMode , ScoringMode . Standardised ) ;
2018-06-08 02:17:12 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . IncreaseFirstObjectVisibility , true ) ;
SetDefault ( OsuSetting . GameplayDisableWinKey , true ) ;
2018-04-25 16:15:53 +08:00
2017-05-02 17:40:30 +08:00
// Update
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ReleaseStream , ReleaseStream . Lazer ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . Version , string . Empty ) ;
2018-04-13 17:19:50 +08:00
2022-04-19 15:59:25 +08:00
SetDefault ( OsuSetting . ShowFirstRunSetup , true ) ;
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ScreenshotFormat , ScreenshotFormat . Jpg ) ;
SetDefault ( OsuSetting . ScreenshotCaptureMenuCursor , false ) ;
2018-04-13 17:19:50 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . SongSelectRightMouseScroll , false ) ;
2018-04-13 18:50:37 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . Scaling , ScalingMode . Off ) ;
2022-10-28 12:52:45 +08:00
SetDefault ( OsuSetting . SafeAreaConsiderations , true ) ;
2023-03-29 21:55:25 +08:00
SetDefault ( OsuSetting . ScalingBackgroundDim , 0.9f , 0.5f , 1f ) ;
2019-01-04 12:29:37 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ScalingSizeX , 0.8f , 0.2f , 1f ) ;
SetDefault ( OsuSetting . ScalingSizeY , 0.8f , 0.2f , 1f ) ;
2019-01-04 12:29:37 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . ScalingPositionX , 0.5f , 0f , 1f ) ;
SetDefault ( OsuSetting . ScalingPositionY , 0.5f , 0f , 1f ) ;
2019-01-04 12:29:37 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . UIScale , 1f , 0.8f , 1.6f , 0.01f ) ;
2019-01-09 18:01:33 +08:00
2022-03-04 11:21:05 +08:00
SetDefault ( OsuSetting . UIHoldActivationDelay , 200.0 , 0.0 , 500.0 , 50.0 ) ;
2019-08-09 19:05:28 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . IntroSequence , IntroSequence . Triangles ) ;
2019-09-19 13:04:51 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . MenuBackgroundSource , BackgroundSource . Skin ) ;
SetDefault ( OsuSetting . SeasonalBackgroundMode , SeasonalBackgroundMode . Sometimes ) ;
2019-09-24 17:42:06 +08:00
2021-03-17 15:10:16 +08:00
SetDefault ( OsuSetting . DiscordRichPresence , DiscordRichPresenceMode . Full ) ;
2020-12-30 13:29:51 +08:00
2022-11-11 17:29:15 +08: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 22:06:40 +08:00
SetDefault ( OsuSetting . EditorAutoSeekOnPlacement , true ) ;
2023-06-09 14:54:22 +08:00
SetDefault ( OsuSetting . EditorLimitedDistanceSnap , false ) ;
2023-10-17 15:01:00 +08:00
SetDefault ( OsuSetting . EditorShowSpeedChanges , false ) ;
2022-07-05 20:42:35 +08:00
2024-05-10 20:32:21 +08:00
SetDefault ( OsuSetting . HideCountryFlags , false ) ;
2024-01-15 13:30:27 +08:00
SetDefault ( OsuSetting . MultiplayerRoomFilter , RoomPermissionsFilter . All ) ;
2022-07-05 20:42:35 +08:00
SetDefault ( OsuSetting . LastProcessedMetadataId , - 1 ) ;
2022-10-14 13:37:24 +08:00
2022-11-02 17:14:20 +08:00
SetDefault ( OsuSetting . ComboColourNormalisationAmount , 0.2f , 0f , 1f , 0.01f ) ;
2024-01-02 21:04:40 +08:00
SetDefault < UserStatus ? > ( OsuSetting . UserOnlineStatus , null ) ;
2024-06-17 16:16:40 +08:00
SetDefault ( OsuSetting . EditorTimelineShowTimingChanges , true ) ;
SetDefault ( OsuSetting . EditorTimelineShowTicks , true ) ;
2017-01-28 18:10:05 +08:00
}
2018-04-13 17:19:50 +08:00
2022-08-22 16:03:20 +08:00
protected override bool CheckLookupContainsPrivateInformation ( OsuSetting lookup )
2022-05-11 13:03:16 +08:00
{
2022-08-22 16:03:20 +08:00
switch ( lookup )
2022-05-11 13:03:16 +08:00
{
case OsuSetting . Token :
return true ;
}
return false ;
}
2020-03-05 12:18:42 +08:00
public void Migrate ( )
2019-01-04 14:34:32 +08:00
{
2020-03-05 12:18:42 +08:00
// arrives as 2020.123.0
2021-10-27 12:04:41 +08:00
string rawVersion = Get < string > ( OsuSetting . Version ) ;
2020-03-05 12:18:42 +08:00
if ( rawVersion . Length < 6 )
return ;
2021-10-27 12:04:41 +08:00
string [ ] pieces = rawVersion . Split ( '.' ) ;
2020-03-05 12:18:42 +08:00
2020-03-05 14:36:36 +08: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 12:18:42 +08:00
if ( ! int . TryParse ( pieces [ 0 ] , out int year ) ) return ;
if ( ! int . TryParse ( pieces [ 1 ] , out int monthDay ) ) return ;
2022-10-28 12:09:28 +08:00
// ReSharper disable once UnusedVariable
2020-03-05 12:18:42 +08:00
int combined = ( year * 10000 ) + monthDay ;
2022-01-03 11:46:20 +08:00
2022-10-28 12:09:28 +08:00
// migrations can be added here using a condition like:
// if (combined < 20220103) { performMigration() }
2023-09-18 20:46:24 +08:00
if ( combined < 20230918 )
{
#pragma warning disable CS0618 // Type or member is obsolete
2023-09-20 03:37:44 +08:00
SetValue ( OsuSetting . AutomaticallyDownloadMissingBeatmaps , Get < bool > ( OsuSetting . AutomaticallyDownloadWhenSpectating ) ) ; // can be removed 20240618
2023-09-18 20:46:24 +08:00
#pragma warning restore CS0618 // Type or member is obsolete
}
2016-11-01 02:44:20 +08:00
}
2018-05-02 18:37:47 +08:00
2020-11-11 11:54:39 +08:00
public override TrackedSettings CreateTrackedSettings ( )
2019-01-04 14:34:32 +08:00
{
2020-11-11 11:54:39 +08: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 11:19:01 +08:00
{
2022-07-20 20:05:20 +08: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 16:00:51 +08:00
new TrackedSetting < bool > ( OsuSetting . MouseDisableButtons , disabledState = > new SettingDescription (
rawValue : ! disabledState ,
2023-11-07 04:10:04 +08:00
name : GlobalActionKeyBindingStrings . ToggleGameplayMouseButtons ,
2021-10-19 16:00:51 +08:00
value : disabledState ? CommonStrings . Disabled . ToLower ( ) : CommonStrings . Enabled . ToLower ( ) ,
shortcut : LookupKeyBindings ( GlobalAction . ToggleGameplayMouseButtons ) )
) ,
2023-08-16 15:17:56 +08: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 16:22:50 +08:00
new TrackedSetting < HUDVisibilityMode > ( OsuSetting . HUDVisibilityMode , visibilityMode = > new SettingDescription (
rawValue : visibilityMode ,
2021-10-19 16:00:51 +08:00
name : GameplaySettingsStrings . HUDVisibilityMode ,
2021-10-19 16:22:50 +08:00
value : visibilityMode . GetLocalisableDescription ( ) ,
2021-10-19 16:00:51 +08: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 15:04:55 +08:00
new TrackedSetting < string > ( OsuSetting . Skin , skin = >
2020-11-11 11:54:39 +08:00
{
2021-11-23 15:04:55 +08:00
string skinName = string . Empty ;
if ( Guid . TryParse ( skin , out var id ) )
2023-06-23 23:59:36 +08:00
skinName = LookupSkinName ( id ) ;
2021-10-19 16:00:51 +08:00
return new SettingDescription (
rawValue : skinName ,
name : SkinSettingsStrings . SkinSectionHeader ,
value : skinName ,
2021-10-23 06:45:48 +08:00
shortcut : new TranslatableString ( @"_" , @"{0}: {1}" ,
GlobalActionKeyBindingStrings . RandomSkin ,
LookupKeyBindings ( GlobalAction . RandomSkin ) )
2021-10-19 16:00:51 +08:00
) ;
2021-10-11 10:55:02 +08:00
} ) ,
2021-10-19 16:00:51 +08: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 11:54:39 +08:00
} ;
}
2022-03-04 11:31:57 +08:00
public Func < Guid , string > LookupSkinName { private get ; set ; } = _ = > @"unknown" ;
2020-11-11 11:19:01 +08:00
2022-03-04 11:31:57 +08:00
public Func < GlobalAction , LocalisableString > LookupKeyBindings { get ; set ; } = _ = > @"unknown" ;
2022-11-08 17:24:57 +08:00
IBindable < float > IGameplaySettings . ComboColourNormalisationAmount = > GetOriginalBindable < float > ( OsuSetting . ComboColourNormalisationAmount ) ;
IBindable < float > IGameplaySettings . PositionalHitsoundsLevel = > GetOriginalBindable < float > ( OsuSetting . PositionalHitsoundsLevel ) ;
2016-08-26 11:28:23 +08:00
}
2018-04-13 17:19:50 +08:00
2021-08-16 15:59:59 +08: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 09:56:27 +08:00
public enum OsuSetting
2016-08-26 11:28:23 +08:00
{
2017-04-15 04:22:41 +08:00
Ruleset ,
2016-11-03 07:37:52 +08:00
Token ,
2017-03-22 00:16:23 +08:00
MenuCursorSize ,
2017-03-18 01:40:03 +08:00
GameplayCursorSize ,
2017-05-13 08:46:37 +08:00
AutoCursorSize ,
2022-07-26 13:07:33 +08:00
GameplayCursorDuringTouch ,
2016-11-03 07:37:52 +08:00
DimLevel ,
2017-12-26 09:11:49 +08:00
BlurLevel ,
2022-11-11 17:29:15 +08:00
EditorDim ,
2019-12-10 20:10:35 +08:00
LightenDuringBreaks ,
2017-09-14 21:44:36 +08:00
ShowStoryboard ,
2016-11-03 07:37:52 +08:00
KeyOverlay ,
2022-09-26 20:07:43 +08:00
GameplayLeaderboard ,
2022-01-03 11:46:20 +08:00
PositionalHitsoundsLevel ,
2020-07-14 19:11:54 +08:00
AlwaysPlayFirstComboBreak ,
2017-05-17 20:39:26 +08:00
FloatingComments ,
2020-07-22 11:41:06 +08:00
HUDVisibilityMode ,
2022-04-27 17:10:58 +08:00
2019-07-07 04:30:30 +08:00
ShowHealthDisplayWhenCantFail ,
2020-03-30 18:59:39 +08:00
FadePlayfieldWhenHealthLow ,
2023-11-05 19:40:06 +08:00
/// <summary>
2023-11-07 03:42:40 +08:00
/// Disables mouse buttons clicks during gameplay.
2023-11-05 19:40:06 +08:00
/// </summary>
2016-11-03 07:37:52 +08:00
MouseDisableButtons ,
MouseDisableWheel ,
2020-08-16 09:34:28 +08:00
ConfineMouseMode ,
2022-03-03 23:14:24 +08: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 15:19:40 +08:00
AudioOffset ,
2022-03-03 23:14:24 +08:00
2018-01-31 17:11:38 +08:00
VolumeInactive ,
2016-11-03 07:37:52 +08:00
MenuMusic ,
MenuVoice ,
2023-12-28 15:05:20 +08:00
MenuTips ,
2017-09-17 06:47:55 +08:00
CursorRotation ,
2016-11-03 07:37:52 +08:00
MenuParallax ,
2022-04-06 04:21:28 +08:00
Prefer24HourTime ,
2017-04-24 18:25:27 +08:00
BeatmapDetailTab ,
2020-09-16 12:33:52 +08:00
BeatmapDetailModsFilter ,
2016-11-03 07:37:52 +08:00
Username ,
ReleaseStream ,
SavePassword ,
SaveUsername ,
2017-05-02 18:40:30 +08:00
DisplayStarsMinimum ,
DisplayStarsMaximum ,
2019-08-24 16:34:54 +08:00
SongSelectGroupingMode ,
SongSelectSortingMode ,
2017-12-13 17:10:32 +08:00
RandomSelectAlgorithm ,
2022-06-21 19:03:46 +08:00
ModSelectHotkeyStyle ,
2017-05-12 12:54:02 +08:00
ShowFpsDisplay ,
2017-08-22 18:41:39 +08:00
ChatDisplayHeight ,
2022-04-02 23:36:49 +08:00
BeatmapListingCardSize ,
2022-03-26 18:18:41 +08:00
ToolbarClockDisplayMode ,
2023-01-25 15:28:38 +08:00
SongSelectBackgroundBlur ,
2017-11-24 17:34:20 +08:00
Version ,
2022-04-19 15:59:25 +08:00
ShowFirstRunSetup ,
2018-01-08 10:34:37 +08:00
ShowConvertedBeatmaps ,
2018-03-11 02:59:20 +08:00
Skin ,
2018-04-13 18:50:37 +08:00
ScreenshotFormat ,
2018-04-18 17:10:40 +08:00
ScreenshotCaptureMenuCursor ,
2018-04-20 23:17:57 +08:00
SongSelectRightMouseScroll ,
2018-04-25 15:15:23 +08:00
BeatmapSkins ,
2021-01-13 13:09:22 +08:00
BeatmapColours ,
2018-04-25 16:15:53 +08:00
BeatmapHitsounds ,
2018-06-08 02:17:12 +08:00
IncreaseFirstObjectVisibility ,
2018-10-23 04:57:37 +08:00
ScoreDisplayMode ,
2019-01-04 12:29:37 +08:00
ExternalLinkWarning ,
2020-04-11 19:08:16 +08:00
PreferNoVideo ,
2019-01-04 12:29:37 +08:00
Scaling ,
ScalingPositionX ,
ScalingPositionY ,
ScalingSizeX ,
2019-01-09 18:01:33 +08:00
ScalingSizeY ,
2023-03-29 21:55:25 +08:00
ScalingBackgroundDim ,
2019-08-09 19:05:28 +08:00
UIScale ,
2019-12-16 07:45:33 +08:00
IntroSequence ,
2021-06-11 15:37:31 +08:00
NotifyOnUsernameMentioned ,
NotifyOnPrivateMessage ,
2019-09-19 19:05:14 +08:00
UIHoldActivationDelay ,
2019-09-24 17:42:06 +08:00
HitLighting ,
2020-06-30 19:12:33 +08:00
MenuBackgroundSource ,
2020-08-02 01:44:30 +08:00
GameplayDisableWinKey ,
2020-10-31 15:22:49 +08:00
SeasonalBackgroundMode ,
2020-11-03 15:01:14 +08:00
EditorWaveformOpacity ,
2022-11-11 17:29:15 +08:00
EditorShowHitMarkers ,
2023-02-19 22:06:40 +08:00
EditorAutoSeekOnPlacement ,
2020-12-30 13:29:51 +08:00
DiscordRichPresence ,
2023-09-18 20:46:24 +08:00
[Obsolete($"Use {nameof(AutomaticallyDownloadMissingBeatmaps)} instead.")] // can be removed 20240318
2020-10-28 18:03:01 +08:00
AutomaticallyDownloadWhenSpectating ,
2023-09-18 20:46:24 +08:00
2021-01-17 21:40:24 +08:00
ShowOnlineExplicitContent ,
2022-10-05 16:50:36 +08:00
LastProcessedMetadataId ,
2022-10-28 12:52:45 +08:00
SafeAreaConsiderations ,
2022-11-02 17:14:20 +08:00
ComboColourNormalisationAmount ,
2023-01-25 06:30:07 +08:00
ProfileCoverExpanded ,
2023-07-05 23:46:28 +08:00
EditorLimitedDistanceSnap ,
2023-09-18 20:46:24 +08:00
ReplaySettingsOverlay ,
2024-01-18 14:08:24 +08:00
ReplayPlaybackControlsExpanded ,
2023-09-18 20:46:24 +08:00
AutomaticallyDownloadMissingBeatmaps ,
2023-11-07 03:42:40 +08:00
EditorShowSpeedChanges ,
2023-11-07 07:13:46 +08:00
TouchDisableGameplayTaps ,
2023-12-14 16:23:03 +08:00
ModSelectTextSearchStartsActive ,
2024-01-02 21:04:40 +08:00
UserOnlineStatus ,
2024-05-10 20:32:21 +08:00
MultiplayerRoomFilter ,
HideCountryFlags ,
2024-06-17 16:16:40 +08:00
EditorTimelineShowTimingChanges ,
EditorTimelineShowTicks ,
2016-08-26 11:28:23 +08:00
}
}