From db8fc350b2bffda63d27797bfe7ae4afb4af327e Mon Sep 17 00:00:00 2001 From: Treeki Date: Fri, 4 Feb 2011 15:40:12 +0100 Subject: Initial commit of NW4RTools. Supports BRRES reading for: Model Bytecode, Model Nodes, Model Vertex Data, and incomplete Materials. Writing is completely unimplemented so far. --- NW4RTools/Logger.cs | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 NW4RTools/Logger.cs (limited to 'NW4RTools/Logger.cs') diff --git a/NW4RTools/Logger.cs b/NW4RTools/Logger.cs new file mode 100644 index 0000000..d5a76f3 --- /dev/null +++ b/NW4RTools/Logger.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NW4RTools { + public class LogContext : IDisposable { + // An awful, awful hack + private readonly Logger Owner; + + public LogContext(Logger owner) { + Owner = owner; + } + + void IDisposable.Dispose() { + Owner.Pop(); + } + } + + public class Logger { + private List PrefixElements; + private List Names; + private int BlockCount; + private string Prefix; + + public Logger() { + Names = new List(); + Names.Add("root"); + + PrefixElements = new List(); + PrefixElements.Add("|"); + + RebuildPrefix(); + } + + private void RebuildPrefix() { + Prefix = string.Join(" ", PrefixElements.ToArray()) + "- "; + } + + public void Send(string format, params object[] args) { + if (BlockCount > 0) + return; + + Console.Write(Prefix); + Console.WriteLine(format, args); + } + + public LogContext Push(string format, params object[] args) { + string n = string.Format(format, args); + Console.Write(Prefix); + Console.Write("=== "); + Console.WriteLine(n); + + Names.Add(n); + + PrefixElements.Add("-"); + RebuildPrefix(); + + return new LogContext(this); + } + + public void Pop() { + PrefixElements.RemoveAt(PrefixElements.Count - 1); + RebuildPrefix(); + + string n = Names[Names.Count - 1]; + Names.RemoveAt(Names.Count - 1); + Console.Write(Prefix); + Console.Write("=/= end "); + Console.WriteLine(n); + } + + public void Block() { + BlockCount += 1; + } + + public void Unblock() { + BlockCount -= 1; + } + } +} + -- cgit v1.2.3