Пример #1
0
        private static void ProcessModeCommand(Queue <string> arguments)
        {
            if (arguments.Count == 0)
            {
                if (CurrentMode == DebugModeFlags.None)
                {
                    Info("No Debug Modes are set");
                    return;
                }

                var modes = new List <string>();
                foreach (var flag in Enum.GetNames <DebugModeFlags>())
                {
                    var value = Enum.Parse <DebugModeFlags>(flag);

                    if (value != DebugModeFlags.None && CurrentMode.HasFlag(value))
                    {
                        modes.Add(flag);
                    }
                }

                Info($"Current Debug Modes: {string.Join(", ", modes)}");
                return;
            }

            var mode = arguments.Dequeue();

            bool enable = true;

            if (mode.StartsWith('~'))
            {
                enable = false;
                mode   = mode.Substring(1);
            }

            var invariantMode = mode.ToLowerInvariant();

            switch (invariantMode)
            {
            case "off":
            case "0":
            case "disabled":
            case "disable":
            case "none":
                if (enable)
                {
                    CurrentMode = DebugModeFlags.None;
                    Info($"Debug Mode set to '{DebugModeFlags.None}'");
                }
                else
                {
                    foreach (var value in Enum.GetValues <DebugModeFlags>())
                    {
                        CurrentMode |= value;
                    }
                    Info("All Debug Mode flags enabled");
                }
                break;

            default:
                foreach (var flag in Enum.GetNames <DebugModeFlags>())
                {
                    if (invariantMode == flag.ToLowerInvariant())
                    {
                        var value = Enum.Parse <DebugModeFlags>(flag);

                        if (enable)
                        {
                            if (CurrentMode.HasFlag(value))
                            {
                                Warning($"Debug Mode flag is already set: '{flag}'");
                            }
                            else
                            {
                                CurrentMode |= value;
                                Info($"Debug Mode flag set: '{flag}'");
                            }
                        }
                        else
                        {
                            if (!CurrentMode.HasFlag(value))
                            {
                                Warning($"Debug Mode flag is not set: '{flag}'");
                            }
                            else
                            {
                                CurrentMode &= ~value;
                                Info($"Debug Mode flag unset: '{flag}'");
                            }
                        }

                        return;
                    }
                }
                Error($"Unknown debug mode: '{mode}'");
                break;
            }
        }
Пример #2
0
 internal static void ToggleMode(DebugModeFlags mode) => CurrentMode ^= mode;
Пример #3
0
 internal static void EnableMode(DebugModeFlags mode) => CurrentMode |= mode;
Пример #4
0
 internal static void DisableMode(DebugModeFlags mode) => CurrentMode &= ~mode;
Пример #5
0
 internal static bool IsModeEnabled(DebugModeFlags mode) => (CurrentMode & mode) == mode;