Example #1
0
        /// <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);
        }
Example #2
0
        /// <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();
            }
        }
Example #3
0
        /// <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);
                    }
                }
            }
        }
Example #4
0
        /// <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));
            }
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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);
        }
Example #7
0
        /// <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>());
        }
Example #9
0
        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)
            };
        }
Example #10
0
 public DoubleSettingViewModel(DoubleSetting setting)
     : base(setting)
 {
     Text = setting.DefaultValue.ToString();
 }