/// <summary> /// Sets a double-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, double Value) { foreach (DoubleSetting Setting in await Database.Find <DoubleSetting>(new FilterFieldEqualTo("Key", Key))) { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); //Log.Informational("Setting updated.", Key, new KeyValuePair<string, object>("Value", Value)); return(true); } else { return(false); } } DoubleSetting NewSetting = new DoubleSetting(Key, Value); await Database.Insert(NewSetting); //Log.Informational("Setting created.", Key, new KeyValuePair<string, object>("Value", Value)); return(true); }
/// <summary> /// Sets a double-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, double Value) { await synchObject.BeginWrite(); try { DoubleSetting Setting = await Database.FindFirstDeleteRest <DoubleSetting>(new FilterFieldEqualTo("Key", Key)); if (Setting is null) { Setting = new DoubleSetting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } } finally { await synchObject.EndWrite(); } }
/// <summary> /// Sets a double-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, double Value) { using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key)) { DoubleSetting Setting = await Database.FindFirstDeleteRest <DoubleSetting>(new FilterFieldEqualTo("Key", Key)); if (Setting is null) { Setting = new DoubleSetting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } } }
/// <summary> /// Sets a double-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, double Value) { using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key)) { DoubleSetting Setting = await Database.FindFirstDeleteRest <DoubleSetting>(new FilterFieldEqualTo("Key", Key)); return(await SetAsyncLocked(Key, Value, Setting)); } }
private static async Task <bool> SetAsyncLocked(string Key, double Value, DoubleSetting Setting) { if (Setting is null) { Setting = new DoubleSetting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } }
protected UserINISettings(IniFile iniFile) { SettingsIni = iniFile; const string VIDEO = "Video"; const string MULTIPLAYER = "MultiPlayer"; const string OPTIONS = "Options"; const string AUDIO = "Audio"; #if YR || ARES const string WINDOWED_MODE_KEY = "Video.Windowed"; BackBufferInVRAM = new BoolSetting(iniFile, VIDEO, "VideoBackBuffer", false); #else const string WINDOWED_MODE_KEY = "Video.Windowed"; BackBufferInVRAM = new BoolSetting(iniFile, VIDEO, "UseGraphicsPatch", true); #endif IngameScreenWidth = new IntSetting(iniFile, VIDEO, "ScreenWidth", 1024); IngameScreenHeight = new IntSetting(iniFile, VIDEO, "ScreenHeight", 768); ClientTheme = new StringSetting(iniFile, MULTIPLAYER, "Theme", string.Empty); DetailLevel = new IntSetting(iniFile, OPTIONS, "DetailLevel", 2); Renderer = new StringSetting(iniFile, "Compatibility", "Renderer", string.Empty); WindowedMode = new BoolSetting(iniFile, VIDEO, WINDOWED_MODE_KEY, false); BorderlessWindowedMode = new BoolSetting(iniFile, VIDEO, "NoWindowFrame", false); ClientResolutionX = new IntSetting(iniFile, VIDEO, "ClientResolutionX", Screen.PrimaryScreen.Bounds.Width); ClientResolutionY = new IntSetting(iniFile, VIDEO, "ClientResolutionY", Screen.PrimaryScreen.Bounds.Height); BorderlessWindowedClient = new BoolSetting(iniFile, VIDEO, "BorderlessWindowedClient", true); ScoreVolume = new DoubleSetting(iniFile, AUDIO, "ScoreVolume", 0.7); SoundVolume = new DoubleSetting(iniFile, AUDIO, "SoundVolume", 0.7); VoiceVolume = new DoubleSetting(iniFile, AUDIO, "VoiceVolume", 0.7); IsScoreShuffle = new BoolSetting(iniFile, AUDIO, "IsScoreShuffle", true); ClientVolume = new DoubleSetting(iniFile, AUDIO, "ClientVolume", 1.0); PlayMainMenuMusic = new BoolSetting(iniFile, AUDIO, "PlayMainMenuMusic", true); StopMusicOnMenu = new BoolSetting(iniFile, AUDIO, "StopMusicOnMenu", true); MessageSound = new BoolSetting(iniFile, AUDIO, "ChatMessageSound", true); ScrollRate = new IntSetting(iniFile, OPTIONS, "ScrollRate", 3); TargetLines = new BoolSetting(iniFile, OPTIONS, "UnitActionLines", true); ScrollCoasting = new IntSetting(iniFile, OPTIONS, "ScrollMethod", 0); Tooltips = new BoolSetting(iniFile, OPTIONS, "ToolTips", true); ShowHiddenObjects = new BoolSetting(iniFile, OPTIONS, "ShowHidden", true); MoveToUndeploy = new BoolSetting(iniFile, OPTIONS, "MoveToUndeploy", true); TextBackgroundColor = new IntSetting(iniFile, OPTIONS, "TextBackgroundColor", 0); DragDistance = new IntSetting(iniFile, OPTIONS, "DragDistance", 4); DoubleTapInterval = new IntSetting(iniFile, OPTIONS, "DoubleTapInterval", 30); Win8CompatMode = new StringSetting(iniFile, OPTIONS, "Win8Compat", "No"); PlayerName = new StringSetting(iniFile, MULTIPLAYER, "Handle", string.Empty); ChatColor = new IntSetting(iniFile, MULTIPLAYER, "ChatColor", -1); LANChatColor = new IntSetting(iniFile, MULTIPLAYER, "LANChatColor", -1); PingUnofficialCnCNetTunnels = new BoolSetting(iniFile, MULTIPLAYER, "PingCustomTunnels", true); WritePathToRegistry = new BoolSetting(iniFile, OPTIONS, "WriteInstallationPathToRegistry", true); PlaySoundOnGameHosted = new BoolSetting(iniFile, MULTIPLAYER, "PlaySoundOnGameHosted", true); SkipConnectDialog = new BoolSetting(iniFile, MULTIPLAYER, "SkipConnectDialog", false); PersistentMode = new BoolSetting(iniFile, MULTIPLAYER, "PersistentMode", false); AutomaticCnCNetLogin = new BoolSetting(iniFile, MULTIPLAYER, "AutomaticCnCNetLogin", false); DiscordIntegration = new BoolSetting(iniFile, MULTIPLAYER, "DiscordIntegration", true); AllowGameInvitesFromFriendsOnly = new BoolSetting(iniFile, MULTIPLAYER, "AllowGameInvitesFromFriendsOnly", false); NotifyOnUserListChange = new BoolSetting(iniFile, MULTIPLAYER, "NotifyOnUserListChange", true); EnableMapSharing = new BoolSetting(iniFile, MULTIPLAYER, "EnableMapSharing", true); AlwaysDisplayTunnelList = new BoolSetting(iniFile, MULTIPLAYER, "AlwaysDisplayTunnelList", false); CheckForUpdates = new BoolSetting(iniFile, OPTIONS, "CheckforUpdates", true); PrivacyPolicyAccepted = new BoolSetting(iniFile, OPTIONS, "PrivacyPolicyAccepted", false); IsFirstRun = new BoolSetting(iniFile, OPTIONS, "IsFirstRun", true); CustomComponentsDenied = new BoolSetting(iniFile, OPTIONS, "CustomComponentsDenied", false); Difficulty = new IntSetting(iniFile, OPTIONS, "Difficulty", 1); ScrollDelay = new IntSetting(iniFile, OPTIONS, "ScrollDelay", 4); GameSpeed = new IntSetting(iniFile, OPTIONS, "GameSpeed", 1); PreloadMapPreviews = new BoolSetting(iniFile, VIDEO, "PreloadMapPreviews", false); ForceLowestDetailLevel = new BoolSetting(iniFile, VIDEO, "ForceLowestDetailLevel", false); MinimizeWindowsOnGameStart = new BoolSetting(iniFile, OPTIONS, "MinimizeWindowsOnGameStart", true); AutoRemoveUnderscoresFromName = new BoolSetting(iniFile, OPTIONS, "AutoRemoveUnderscoresFromName", true); }
/// <summary> /// Gets a double-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="DefaultValue">Default value, if not found.</param> /// <returns>Setting value.</returns> public static async Task <double> GetAsync(string Key, double DefaultValue) { DoubleSetting Setting = await GetAsync <DoubleSetting>(Key); return(Setting?.Value ?? DefaultValue); }
protected UserINISettings(IniFile iniFile) { SettingsIni = iniFile; #if YR || ARES const string WINDOWED_MODE_KEY = "Video.Windowed"; BackBufferInVRAM = new BoolSetting(iniFile, VIDEO, "VideoBackBuffer", false); #else const string WINDOWED_MODE_KEY = "Video.Windowed"; BackBufferInVRAM = new BoolSetting(iniFile, VIDEO, "UseGraphicsPatch", true); #endif IngameScreenWidth = new IntSetting(iniFile, VIDEO, "ScreenWidth", 1024); IngameScreenHeight = new IntSetting(iniFile, VIDEO, "ScreenHeight", 768); ClientTheme = new StringSetting(iniFile, MULTIPLAYER, "Theme", string.Empty); DetailLevel = new IntSetting(iniFile, OPTIONS, "DetailLevel", 2); Renderer = new StringSetting(iniFile, COMPATIBILITY, "Renderer", string.Empty); WindowedMode = new BoolSetting(iniFile, VIDEO, WINDOWED_MODE_KEY, false); BorderlessWindowedMode = new BoolSetting(iniFile, VIDEO, "NoWindowFrame", false); ClientResolutionX = new IntSetting(iniFile, VIDEO, "ClientResolutionX", Screen.PrimaryScreen.Bounds.Width); ClientResolutionY = new IntSetting(iniFile, VIDEO, "ClientResolutionY", Screen.PrimaryScreen.Bounds.Height); BorderlessWindowedClient = new BoolSetting(iniFile, VIDEO, "BorderlessWindowedClient", true); ClientFPS = new IntSetting(iniFile, VIDEO, "ClientFPS", 60); ScoreVolume = new DoubleSetting(iniFile, AUDIO, "ScoreVolume", 0.7); SoundVolume = new DoubleSetting(iniFile, AUDIO, "SoundVolume", 0.7); VoiceVolume = new DoubleSetting(iniFile, AUDIO, "VoiceVolume", 0.7); IsScoreShuffle = new BoolSetting(iniFile, AUDIO, "IsScoreShuffle", true); ClientVolume = new DoubleSetting(iniFile, AUDIO, "ClientVolume", 1.0); PlayMainMenuMusic = new BoolSetting(iniFile, AUDIO, "PlayMainMenuMusic", true); StopMusicOnMenu = new BoolSetting(iniFile, AUDIO, "StopMusicOnMenu", true); MessageSound = new BoolSetting(iniFile, AUDIO, "ChatMessageSound", true); ScrollRate = new IntSetting(iniFile, OPTIONS, "ScrollRate", 3); TargetLines = new BoolSetting(iniFile, OPTIONS, "UnitActionLines", true); ScrollCoasting = new IntSetting(iniFile, OPTIONS, "ScrollMethod", 0); Tooltips = new BoolSetting(iniFile, OPTIONS, "ToolTips", true); ShowHiddenObjects = new BoolSetting(iniFile, OPTIONS, "ShowHidden", true); MoveToUndeploy = new BoolSetting(iniFile, OPTIONS, "MoveToUndeploy", true); TextBackgroundColor = new IntSetting(iniFile, OPTIONS, "TextBackgroundColor", 0); DragDistance = new IntSetting(iniFile, OPTIONS, "DragDistance", 4); DoubleTapInterval = new IntSetting(iniFile, OPTIONS, "DoubleTapInterval", 30); Win8CompatMode = new StringSetting(iniFile, OPTIONS, "Win8Compat", "No"); PlayerName = new StringSetting(iniFile, MULTIPLAYER, "Handle", string.Empty); ChatColor = new IntSetting(iniFile, MULTIPLAYER, "ChatColor", -1); LANChatColor = new IntSetting(iniFile, MULTIPLAYER, "LANChatColor", -1); PingUnofficialCnCNetTunnels = new BoolSetting(iniFile, MULTIPLAYER, "PingCustomTunnels", true); WritePathToRegistry = new BoolSetting(iniFile, OPTIONS, "WriteInstallationPathToRegistry", true); PlaySoundOnGameHosted = new BoolSetting(iniFile, MULTIPLAYER, "PlaySoundOnGameHosted", true); SkipConnectDialog = new BoolSetting(iniFile, MULTIPLAYER, "SkipConnectDialog", false); PersistentMode = new BoolSetting(iniFile, MULTIPLAYER, "PersistentMode", false); AutomaticCnCNetLogin = new BoolSetting(iniFile, MULTIPLAYER, "AutomaticCnCNetLogin", false); DiscordIntegration = new BoolSetting(iniFile, MULTIPLAYER, "DiscordIntegration", true); AllowGameInvitesFromFriendsOnly = new BoolSetting(iniFile, MULTIPLAYER, "AllowGameInvitesFromFriendsOnly", false); NotifyOnUserListChange = new BoolSetting(iniFile, MULTIPLAYER, "NotifyOnUserListChange", true); DisablePrivateMessagePopups = new BoolSetting(iniFile, MULTIPLAYER, "DisablePrivateMessagePopups", false); AllowPrivateMessagesFromState = new IntSetting(iniFile, MULTIPLAYER, "AllowPrivateMessagesFromState", (int)AllowPrivateMessagesFromEnum.All); EnableMapSharing = new BoolSetting(iniFile, MULTIPLAYER, "EnableMapSharing", true); AlwaysDisplayTunnelList = new BoolSetting(iniFile, MULTIPLAYER, "AlwaysDisplayTunnelList", false); CheckForUpdates = new BoolSetting(iniFile, OPTIONS, "CheckforUpdates", true); PrivacyPolicyAccepted = new BoolSetting(iniFile, OPTIONS, "PrivacyPolicyAccepted", false); IsFirstRun = new BoolSetting(iniFile, OPTIONS, "IsFirstRun", true); CustomComponentsDenied = new BoolSetting(iniFile, OPTIONS, "CustomComponentsDenied", false); Difficulty = new IntSetting(iniFile, OPTIONS, "Difficulty", 1); ScrollDelay = new IntSetting(iniFile, OPTIONS, "ScrollDelay", 4); GameSpeed = new IntSetting(iniFile, OPTIONS, "GameSpeed", 1); PreloadMapPreviews = new BoolSetting(iniFile, VIDEO, "PreloadMapPreviews", false); ForceLowestDetailLevel = new BoolSetting(iniFile, VIDEO, "ForceLowestDetailLevel", false); MinimizeWindowsOnGameStart = new BoolSetting(iniFile, OPTIONS, "MinimizeWindowsOnGameStart", true); AutoRemoveUnderscoresFromName = new BoolSetting(iniFile, OPTIONS, "AutoRemoveUnderscoresFromName", true); SortState = new IntSetting(iniFile, GAME_FILTERS, "SortState", (int)SortDirection.None); ShowFriendGamesOnly = new BoolSetting(iniFile, GAME_FILTERS, "ShowFriendGamesOnly", DEFAULT_SHOW_FRIENDS_ONLY_GAMES); HideLockedGames = new BoolSetting(iniFile, GAME_FILTERS, "HideLockedGames", DEFAULT_HIDE_LOCKED_GAMES); HidePasswordedGames = new BoolSetting(iniFile, GAME_FILTERS, "HidePasswordedGames", DEFAULT_HIDE_PASSWORDED_GAMES); HideIncompatibleGames = new BoolSetting(iniFile, GAME_FILTERS, "HideIncompatibleGames", DEFAULT_HIDE_INCOMPATIBLE_GAMES); MaxPlayerCount = new IntRangeSetting(iniFile, GAME_FILTERS, "MaxPlayerCount", DEFAULT_MAX_PLAYER_COUNT, 2, 8); FavoriteMaps = new StringListSetting(iniFile, OPTIONS, "FavoriteMaps", new List <string>()); }
public SettingsViewModel() { PanelColor = new PanelColorSetting() { Name = nameof(PanelOpacity) }; PrimaryColor = new PrimaryColorSetting() { Name = nameof(PrimaryColor) }; SecondaryColor = new ColorSetting() { Name = nameof(SecondaryColor) }; SecondaryColorL = new ColorSetting() { Name = nameof(SecondaryColorL) }; ForegroundColor = new ColorSetting() { Name = nameof(ForegroundColor) }; ForegroundColorL = new ColorSetting() { Name = nameof(ForegroundColorL) }; LyricForegroundColor = new ColorSetting() { Name = nameof(LyricForegroundColor) }; LyricHighlightColor = new ColorSetting() { Name = nameof(LyricHighlightColor) }; LyricShadowColor = new ShadowColorSetting() { Name = "LyricShadowEffect" }; TextShadowColor = new ShadowColorSetting() { Name = "TextShadowEffect" }; PrimaryFont = new FontSetting() { Name = nameof(PrimaryFont) }; LyricFont = new FontSetting() { Name = nameof(LyricFont) }; TextMediumFontSize = new DoubleSetting() { Name = nameof(TextMediumFontSize) }; TextSmallFontSize = new DoubleSetting() { Name = nameof(TextSmallFontSize) }; LyricMediumFontSize = new DoubleSetting() { Name = nameof(LyricMediumFontSize) }; LyricSmallFontSize = new DoubleSetting() { Name = nameof(LyricSmallFontSize) }; PanelOpacity = new OpacitySetting() { Name = nameof(PanelOpacity) }; MusicVolume = new VolumeSetting() { Name = nameof(MusicVolume) }; BackgroundCoverVisibility = new VisibilitySetting() { Name = nameof(BackgroundCoverVisibility) }; MiniBackgroundCoverVisibility = new VisibilitySetting() { Name = nameof(MiniBackgroundCoverVisibility) }; }
public DoubleSettingViewModel(DoubleSetting setting) : base(setting) { Text = setting.DefaultValue.ToString(); }