using System; using System.Collections.Generic; using System.Drawing; namespace DFEngine.Logging { public static class ConsoleColors { private static readonly Dictionary GameColors = new Dictionary { {(byte) GameLogLevel.Debug, Color.Magenta}, {(byte) GameLogLevel.Startup, Color.Green}, {(byte) GameLogLevel.Internal, Color.Cyan}, {(byte) GameLogLevel.Warning, Color.Yellow}, {(byte) GameLogLevel.Exception, Color.Red}, }; private static readonly Dictionary DatabaseColors = new Dictionary { {(byte) DatabaseLogLevel.Debug, Color.Yellow}, {(byte) DatabaseLogLevel.Startup, Color.Green}, {(byte) DatabaseLogLevel.Warning, Color.Yellow}, {(byte) DatabaseLogLevel.Error, Color.DarkRed}, {(byte) DatabaseLogLevel.DatabaseClientError, Color.Red}, }; private static readonly Dictionary SocketColors = new Dictionary { {(byte) SocketLogLevel.Debug, Color.Blue}, {(byte) SocketLogLevel.Startup, Color.Blue}, {(byte) SocketLogLevel.Warning, Color.Blue}, {(byte) SocketLogLevel.Exception, Color.DarkBlue}, }; private static readonly Dictionary EngineColors = new Dictionary { {(byte) EngineLogLevel.Debug, Color.Magenta}, {(byte) EngineLogLevel.Info, Color.DarkGreen}, {(byte) EngineLogLevel.Startup, Color.Green}, {(byte) EngineLogLevel.Warning, Color.Yellow}, {(byte) EngineLogLevel.Exception, Color.Red}, }; private static readonly Dictionary CommandColors = new Dictionary { {(byte) CommandLogLevel.Error, Color.Blue}, {(byte) CommandLogLevel.Execute, Color.DarkBlue}, {(byte) CommandLogLevel.InvalidAccess, Color.Red}, {(byte) CommandLogLevel.InvalidParameters, Color.DarkRed}, }; public static bool GetColor(LogType logType, byte logLevel, out Color pColor) { switch (logType) { case LogType.EngineLog: return EngineColors.TryGetValue(logLevel, out pColor); case LogType.CommandLog: return CommandColors.TryGetValue(logLevel, out pColor); case LogType.DatabaseLog: return DatabaseColors.TryGetValue(logLevel, out pColor); case LogType.GameLog: return GameColors.TryGetValue(logLevel, out pColor); case LogType.SocketLog: return SocketColors.TryGetValue(logLevel, out pColor); default: pColor = Color.White; return true; } } } }