private void WriteCsOutput(TextWriter textWriter, StringsContent stringsData)
        {
            CSharpStreamWriter writer = new CSharpStreamWriter(textWriter);

            writer.WriteLine("//");
            writer.WriteLine("// This file was generated on {{0}}.", DateTime.Now);
            writer.WriteLine("//");
            writer.WriteLine();
            writer.WriteLine("using System;");
            writer.WriteLine();
            writer.WriteLine("namespace {{0}}", stringsData.Namespace);
            writer.WriteLine("{");
            writer.WriteLine("public class {{0}}", stringsData.ClassName);
            writer.WriteLine("{");
            writer.WriteLine("private string[] strings;");
            writer.WriteLine();
            writer.WriteLine("public {{0}}(string[] strings)", stringsData.ClassName);
            writer.WriteLine("{");
            writer.WriteLine("this.strings = strings;");
            writer.WriteLine("}");
            writer.WriteLine();

            for (int i = 0; i < stringsData.Strings.Count; i++)
            {
                StringsContent.String s = stringsData.Strings[i];

                if (s.ArgCount == 0)
                {
                    writer.WriteLine("public string {{0}} { get { return strings[{{1}}]; } }",
                                     s.Name, i);
                }
                else
                {
                    StringBuilder sb1 = new StringBuilder();
                    StringBuilder sb2 = new StringBuilder();

                    for (int j = 0; j < s.ArgCount; j++)
                    {
                        sb1.Append("arg" + j.ToString());
                        sb2.Append("object arg" + j.ToString());

                        if (j < s.ArgCount - 1)
                        {
                            sb1.Append(", ");
                            sb2.Append(", ");
                        }
                    }

                    writer.WriteLine("public string {{0}}({{1}}) { return String.Format(strings[{{2}}], {{3}}); }",
                                     s.Name, sb2.ToString(), i, sb1.ToString());
                }
            }

            writer.WriteLine("}");
            writer.WriteLine("}");
        }
        private void WriteCsOutput(TextWriter textWriter, RectanglesContent rectangleData)
        {
            CSharpStreamWriter writer = new CSharpStreamWriter(textWriter);

            writer.WriteLine("//");
            writer.WriteLine("// This file was generated on {{0}}.", DateTime.Now);
            writer.WriteLine("//");
            writer.WriteLine();
            writer.WriteLine("using System;");
            writer.WriteLine("using Microsoft.Xna.Framework;");
            writer.WriteLine("using Microsoft.Xna.Framework.Graphics;");
            writer.WriteLine("using System.Text;");
            writer.WriteLine();
            writer.WriteLine("namespace {{0}}", rectangleData.Namespace);
            writer.WriteLine("{");

            for (int i = 0; i < rectangleData.Classes.Count; i++)
            {
                RectanglesContent.Class classData = rectangleData.Classes[i];

                writer.WriteLine("public class {{0}}Rectangles", classData.ClassNamePrefix);
                writer.WriteLine("{");

                writer.WriteLine("private Rectangle[] rectangles;");
                writer.WriteLine();
                writer.WriteLine("public {{0}}Rectangles(Rectangle[] rectangles)", classData.ClassNamePrefix);
                writer.WriteLine("{");
                writer.WriteLine("this.rectangles = rectangles;");
                writer.WriteLine("}");
                writer.WriteLine();

                for (int j = 0; j < classData.RectangleNames.Count; j++)
                {
                    writer.WriteLine("public Rectangle {{0}} { get { return rectangles[{{1}}]; } }",
                                     classData.RectangleNames[j],
                                     j);
                }

                writer.WriteLine("}");
            }

            writer.WriteLine("public static class Rectangles");
            writer.WriteLine("{");

            for (int i = 0; i < rectangleData.Classes.Count; i++)
            {
                writer.WriteLine("public static {{0}}Rectangles {{0}} { get; set; }", rectangleData.Classes[i].ClassNamePrefix);
            }

            writer.WriteLine("}");
            writer.WriteLine("}");
        }
        private void WriteCsOutput(TextWriter textWriter, StringsContent stringsData)
        {
            CSharpStreamWriter writer = new CSharpStreamWriter(textWriter);

            writer.WriteLine("//");
            writer.WriteLine("// This file was generated on {{0}}.", DateTime.Now);
            writer.WriteLine("//");
            writer.WriteLine();
            writer.WriteLine("using System;");
            writer.WriteLine();
            writer.WriteLine("namespace {{0}}", stringsData.Namespace);
            writer.WriteLine("{");
            writer.WriteLine("public class {{0}}", stringsData.ClassName);
            writer.WriteLine("{");
            writer.WriteLine("private string[] strings;");
            writer.WriteLine();
            writer.WriteLine("public {{0}}(string[] strings)", stringsData.ClassName);
            writer.WriteLine("{");
            writer.WriteLine("this.strings = strings;");
            writer.WriteLine("}");
            writer.WriteLine();

            for (int i = 0; i < stringsData.Strings.Count; i++)
            {
                StringsContent.String s = stringsData.Strings[i];

                if (s.ArgCount == 0)
                {
                    writer.WriteLine("public string {{0}} { get { return strings[{{1}}]; } }",
                        s.Name, i);
                }
                else
                {
                    StringBuilder sb1 = new StringBuilder();
                    StringBuilder sb2 = new StringBuilder();

                    for (int j = 0; j < s.ArgCount; j++)
                    {
                        sb1.Append("arg" + j.ToString());
                        sb2.Append("object arg" + j.ToString());

                        if (j < s.ArgCount - 1)
                        {
                            sb1.Append(", ");
                            sb2.Append(", ");
                        }
                    }

                    writer.WriteLine("public string {{0}}({{1}}) { return String.Format(strings[{{2}}], {{3}}); }",
                        s.Name, sb2.ToString(), i, sb1.ToString());
                }
            }

            writer.WriteLine("}");
            writer.WriteLine("}");
        }