using System; using System.Diagnostics; namespace Holo { /// /// Provides interface output related functions, such as logging activities. /// public static class Out { /// /// Enum with flags for log importancies. If 'minimumImportance' flag is higher than the action to be logged, then the action won't be logged. /// public enum logFlags{ImportantAction = 3, StandardAction = 2, BelowStandardAction = 1, MehAction = 0} /// /// Flag for minimum importance in logs. Adjust this to don't print less important logs. /// public static logFlags minimumImportance; private static bool bwait = false; /// /// Prints a green line of log, together with timestamp and method name. /// /// The log line to be printed. public static void wait() { while(bwait) {} } public static void WriteLine(string logText) { wait(); bwait = true; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.Green; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; bwait = false; } /// /// Prints a green line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this log line. public static void WriteLine(string logText, logFlags logFlag) { if ((int)logFlag < (int)minimumImportance) return; wait(); bwait = true; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.Green; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; bwait = false; } /// /// Prints a customizeable line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this log line. /// The color to use on the left. /// The color to use on the right. public static void WriteLine(string logText, logFlags logFlag, ConsoleColor colorOne, ConsoleColor colorTwo) { if ((int)logFlag < (int)minimumImportance) return; wait(); bwait = true; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = colorOne; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = colorTwo; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; bwait = false; } public static void WriteTrace(string logText) { return; /*DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray;*/ } /// /// Prints a red, error line of log, together with timestamp and method name. /// /// The log line to be printed. public static void WriteError(string logText) { DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.Red; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Prints a red,error line of log, together with timestamp and method name. /// /// The log line to be printed. /// The importance flag of this error. public static void WriteError(string logText, logFlags logFlag) { if ((int)logFlag < (int)minimumImportance) return; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.Red; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(logText); Console.ForegroundColor = ConsoleColor.Gray; } /// /// Writes a plain text line. /// /// The log line to be printed. public static void WritePlain(string logText) { wait(); bwait = true; Console.WriteLine(logText); bwait = false; } /// /// Writes a blank line. /// public static void WriteBlank() { wait(); bwait = true; Console.WriteLine(); bwait = false; } /// /// Writes a special line of log, with customizeable colors and header coloring of logText. /// /// The log line to be printed. /// The importance flag of this log line. /// The color to use on the left. /// The color to use on the right. /// The string to use infront of logText. /// The length of the header to color. /// The color for the header in the logText. public static void WriteSpecialLine(string logText, logFlags logFlag, ConsoleColor colorOne, ConsoleColor colorTwo, string headerHead, int headerLength, ConsoleColor headerColor) { //if ((int)logFlag < (int)minimumImportance) //return; wait(); bwait = true; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = colorOne; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] " + headerHead + " "); Console.ForegroundColor = headerColor; try { Console.Write(logText.Substring(0, headerLength)); } catch { Console.Write(logText); } Console.ForegroundColor = colorTwo; Console.WriteLine(logText.Substring(headerLength)); Console.ForegroundColor = ConsoleColor.Gray; bwait = false; } public static void WriteDCError(string logText) { try { System.IO.FileStream Writer = new System.IO.FileStream("DC.err", System.IO.FileMode.Append, System.IO.FileAccess.Write); byte[] Msg = System.Text.ASCIIEncoding.ASCII.GetBytes(logText + "\r\n\r\n"); Writer.Write(Msg, 0, Msg.Length); } catch (Exception eX) { Out.WritePlain(eX.Message); } wait(); bwait = true; DateTime _DTN = DateTime.Now; StackFrame _SF = new StackTrace().GetFrame(1); Console.Write("[" + _DTN.ToLongTimeString() + ":" + _DTN.Millisecond.ToString() + "] ["); Console.ForegroundColor = ConsoleColor.Red; Console.Write(_SF.GetMethod().ReflectedType.Name + "." + _SF.GetMethod().Name); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("] » "); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("Disconnection has been saved"); Console.ForegroundColor = ConsoleColor.Gray; bwait = false; } } }