Exemple #1
0
        private void WriteCodeFile(CodeFileWriter codeFileWriter, CodeWriterOptions options)
        {
            codeFileWriter.WriteUsingStatements();

            if (string.IsNullOrEmpty(CodeFile.RelativeNamespace))
            {
                codeFileWriter.WriteNamespace($"{options.RootNamespace}");
            }
            else
            {
                codeFileWriter.WriteNamespace($"{options.RootNamespace}.{CodeFile.RelativeNamespace}");
            }

            // start namespace block
            codeFileWriter.WriteStartBlock();
            codeFileWriter.Declaration.WriteLine(CodeFile.Declaration);
            codeFileWriter.WriteDeclarationSection();

            // start declaration block
            codeFileWriter.WriteStartBlock();

            codeFileWriter.WritePropertiesSection(ignoreNewLineInSection: true);
            codeFileWriter.WriteConstructorsSection();
            codeFileWriter.WritePublicPropertiesSection();
            codeFileWriter.WritePublicMethodsSection();
            codeFileWriter.WriteMethodsSection();

            // end declaration block
            codeFileWriter.WriteEndBlock();

            // end namespace block
            codeFileWriter.WriteEndBlock();
        }
Exemple #2
0
        public static void WriteInstanceStubs()
        {
            var dir = ToolConfig.DefaultAddonSourceDir + "Instances/";

            RealmDBMgr.Initialize();
            ContentMgr.Initialize();
            World.InitializeWorld();
            InstanceMgr.Initialize();

            foreach (var instance in InstanceMgr.InstanceInfos)
            {
                var className = instance.Id.ToString();
                var baseClass = typeof(BaseInstance).Name;
                var file      = dir + className + ".cs";
                if (!File.Exists(file))
                {
                    using (var writer = new CodeFileWriter(file, "WCell.Addons.Default.Instances",
                                                           className,
                                                           "class",
                                                           ": " + baseClass,
                                                           "WCell.RealmServer.Instances"))
                    {
                    }
                }
            }
        }
Exemple #3
0
        public static void WriteInstanceStubs()
        {
            var dir = ToolConfig.DefaultAddonSourceDir + "Instances/";

            RealmDBMgr.Initialize();
            ContentMgr.Initialize();
            World.InitializeWorld();
            InstanceMgr.Initialize();

            foreach (var instance in InstanceMgr.InstanceInfos)
            {
                var className = instance.Id.ToString();
                var baseClass = typeof(BaseInstance).Name;
                var file = dir + className + ".cs";
                if (!File.Exists(file))
                {
                    using (var writer = new CodeFileWriter(file, "WCell.Addons.Default.Instances",
                                                           className,
                                                           "class",
                                                           ": " + baseClass,
                                                           "WCell.RealmServer.Instances"))
                    {
                    }
                }
            }
        }
        private void WriteCodeFile(CodeFileWriter codeFileWriter)
        {
            codeFileWriter.WriteUsingStatements();
            codeFileWriter.WriteNamespace(CodeFile.Namespace);

            // start namespace block
            codeFileWriter.WriteStartBlock();
            codeFileWriter.Declaration.WriteLine(CodeFile.Declaration);
            codeFileWriter.WriteDeclarationSection();

            // start declaration block
            codeFileWriter.WriteStartBlock();

            codeFileWriter.WritePropertiesSection(ignoreNewLineInSection: true);
            codeFileWriter.WriteConstructorsSection();
            codeFileWriter.WritePublicPropertiesSection();
            codeFileWriter.WritePublicMethodsSection();
            codeFileWriter.WriteMethodsSection();

            // end declaration block
            codeFileWriter.WriteEndBlock();

            // end namespace block
            codeFileWriter.WriteEndBlock();
        }
Exemple #5
0
		public static void WriteMapBoundaries(string outputFileName)
		{
			using (writer = new CodeFileWriter(outputFileName, "WCell.Constants.World", "MapBoundaries", "static class", "",
				"WCell.Util.Graphics"))
			{
				writer.WriteMethod("public", "static BoundingBox[]", "GetMapBoundaries", "", WriteMethod);
			}
		}
 public static void WriteMapBoundaries(string outputFileName)
 {
     using (writer = new CodeFileWriter(outputFileName, "WCell.Constants.World", "MapBoundaries", "static class", "",
                                        "WCell.Util.Graphics"))
     {
         writer.WriteMethod("public", "static BoundingBox[]", "GetMapBoundaries", "", WriteMethod);
     }
 }
Exemple #7
0
 public static void WriteZoneTileSets(string outputFileName)
 {
     tileSets = ZoneBoundaryWriter.ExportTileSets();
     using (writer = new CodeFileWriter(outputFileName, "WCell.Constants.World", "ZoneBoundaries", "static class", "",
         "WCell.Util.Graphics"))
     {
         writer.WriteMethod("public", "static ZoneTileSet[]", "GetZoneTileSets", "", WriteMethod);
     }
 }
Exemple #8
0
 public static void WriteZoneTileSets(string outputFileName)
 {
     tileSets = ZoneBoundaryWriter.ExportTileSets();
     using (writer = new CodeFileWriter(outputFileName, "WCell.Constants.World", "ZoneBoundaries", "static class", "",
                                        "WCell.Util.Graphics"))
     {
         writer.WriteMethod("public", "static ZoneTileSet[]", "GetZoneTileSets", "", WriteMethod);
     }
 }
Exemple #9
0
		public static void WriteSpellLines(string outputFileName)
		{
			CreateMaps();
			WCellEnumWriter.WriteSpellLinesEnum();

			using (writer = new CodeFileWriter(outputFileName, "WCell.RealmServer.Spells", "SpellLines", "static partial class", "",
				"WCell.Constants.Spells"))
			{
				writer.WriteMethod("private", "static void", "SetupSpellLines", "", WriteSpellLinesMethod);
			}
		}
Exemple #10
0
        public static void WriteSpellLines(string outputFileName)
        {
            WCellEnumWriter.WriteSpellLinesEnum();

            using (writer = new CodeFileWriter(outputFileName, "WCell.RealmServer.Spells", "SpellLines", "static partial class", "",
                                               "WCell.Constants",
                                               "WCell.Constants.Spells"))
            {
                writer.WriteMethod("private", "static void", "SetupSpellLines", "", WriteSpellLinesMethod);
            }
        }
        private void WriteCodeFile(CodeFileConverter codeFileConverter)
        {
            var directoryPath = Path.Combine(options.RootDirectory, codeFileConverter.CodeFile.RelativeNamespace);
            var filePath      = Path.Combine(directoryPath, $"{codeFileConverter.CodeFile.FileName}.cs");

            CreateDirectoryIfNotExist(directoryPath);

            var codeWriter = new CodeFileWriter(filePath, codeFileConverter.CodeFile, options);

            codeFileConverter.WriteTo(codeWriter, options);
            codeWriter.Flush();
        }
Exemple #12
0
 public static void WriteWCellInfo()
 {
     using (var writer = new CodeFileWriter(Path.Combine(ToolConfig.WCellConstantsRoot, "WCellInfo.cs"),
                                            "WCell.Constants", "WCellInfo", "static class"))
     {
         writer.WriteSummary(@"The official codename of the current WCell build");
         writer.WriteLine("public const string Codename = \"Amethyst\";");
         writer.WriteLine();
         writer.WriteSummary(@"The color of the current WCell codename");
         writer.WriteLine(@"public const ChatColor CodenameColor = ChatColor.Purple;");
         writer.WriteLine();
         writer.WriteSummary("The version of the WoW Client that is currently supported.");
         writer.WriteLine("public static readonly ClientVersion RequiredVersion = new ClientVersion({0}, {1}, {2}, {3});",
                          WoWFile.Version.Major, WoWFile.Version.Minor, WoWFile.Version.Revision, WoWFile.Version.Build);
         writer.WriteLine();
     }
 }
        private static void DumpToFile(string outputFileName)
        {
            using (var writer = new CodeFileWriter(outputFileName, "WCell.Constants.Spells", "SpellFailedReason : byte", "enum", ""))
            {
                var len = SpellFailures.Count;
                var val = 0;
                for (var i = 0; i < len; i++, val++)
                {
                    if (unfindableMap.ContainsKey(i))
                    {
                        WriteVal(writer, unfindableMap[i], i);
                        val++;
                    }

                    WriteVal(writer, SpellFailures[i], val);
                }
                writer.WriteLine("Ok = 0xFF");
            }
        }
		private static void DumpToFile(string outputFileName)
		{
			using (var writer = new CodeFileWriter(outputFileName, "WCell.Constants.Spells", "SpellFailedReason : byte", "enum", ""))
			{
				var len = SpellFailures.Count;
				var val = 0;
				for (var i = 0; i < len; i++, val++)
				{
					if (unfindableMap.ContainsKey(i))
					{
						WriteVal(writer, unfindableMap[i], i);
						val++;
					}

					WriteVal(writer, SpellFailures[i], val);
				}
				writer.WriteLine("Ok = 0xFF");
			}
		}
Exemple #15
0
    public void TestWriteClassToFile()
    {
        var gen = new CodeUnitGenerator("TestCodeGen");

        gen.NamespaceImports.Add("System");

        string         sourceFile = "mycodegenpath.cs";
        ClassGenerator classGen   = new ClassGenerator("MyCodeDOMTestClass");

        gen.AddType(classGen);
        var ccu = gen.GenerateCompileUnit();

        CodeFileWriter writer = new CodeFileWriter();

        writer.Write(ccu, sourceFile);

        bool exists = File.Exists(sourceFile);

        Assert.IsTrue(exists);
    }
Exemple #16
0
        public static void WriteEnum <T>(
            string enumName,
            string enumSuffix,
            string group,
            IEnumerable <T> values,
            bool hexadecimal,
            Validator <T> validator,
            GetField <T> getNameDelegate,
            GetField <T> getCommentDelegate,
            GetField <T, string> getDuplNameDelegate,
            GetField <T> getIdDelegate)
        {
            Init();
            var dir = Path.Combine(Dir, group);

            Directory.CreateDirectory(dir);

            var file = Path.Combine(dir, enumName + ".cs");

            Console.Write("Writing enum {0} to {1}...", enumName, new DirectoryInfo(file).FullName);

            var first = true;

            using (var writer = new CodeFileWriter(file,
                                                   "WCell.Constants." + group, enumName, "enum", enumSuffix))
            {
                try
                {
                    var names = new Dictionary <string, int>(values.Count());

                    foreach (T item in values)
                    {
                        if (item == null || item.Equals(default(T)) || !validator(item))
                        {
                            continue;
                        }

                        var name = getNameDelegate(item);

                        if (name == null)
                        {
                            throw new Exception(string.Format("Name for Item {0} in {1}/{2} was null.", item, group, enumName));
                        }

                        name = BeautifyName(name);

                        int count;
                        if (!names.TryGetValue(name, out count))
                        {
                            names.Add(name, 1);
                        }
                        else
                        {
                            names.Remove(name);
                            names.Add(name, ++count);

                            string duplName = null;
                            if (getDuplNameDelegate != null)
                            {
                                duplName = getDuplNameDelegate(item, name);
                            }

                            if (duplName != null)
                            {
                                name = duplName;
                            }
                            else
                            {
                                name = name + "_" + count;
                            }
                        }

                        var val = getIdDelegate(item);
                        if (hexadecimal)
                        {
                            int ival;
                            if (int.TryParse(val, out ival))
                            {
                                val = string.Format("0x{0:x}", ival);
                            }
                        }

                        if (first)
                        {
                            first = false;
                            long id;
                            if (!long.TryParse(val, out id))
                            {
                                throw new InvalidDataException("Invalid ID was not numeric: " + val);
                            }

                            if (id > 0)
                            {
                                writer.WriteLine("None = 0,");
                            }
                        }

                        string comment;
                        if (getCommentDelegate != null)
                        {
                            comment = getCommentDelegate(item);
                            if (comment != null)
                            {
                                var commentLines = comment.Split(new[] { "\n", "\r\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
                                if (commentLines.Length > 0)
                                {
                                    writer.StartSummary();
                                    foreach (string line in commentLines)
                                    {
                                        writer.WriteXmlCommentLine(line);
                                    }
                                    writer.EndSummary();
                                }
                            }
                        }
                        writer.WriteLine(string.Format("{0} = {1},", name, val));
                    }

                    writer.WriteLine("End");

                    writer.Finish();

                    Console.WriteLine(" Done.");
                }
                catch (Exception ex)
                {
                    writer.OnException(ex);
                }
            }
        }
Exemple #17
0
        public void Write(string fileName)
        {
            using (var writer = new CodeFileWriter(fileName,
                                                   "WCell.Constants.Updates", "UpdateFields",
                                                   CodeFileWriter.StaticTag + " " + CodeFileWriter.Class,
                                                   "",
                                                   "System"))
            {
                writer.ExecuteSafely(() =>
                {
                    writer.WriteIndent("public static readonly ");
                    writer.Array(UpdateFieldTypeName, "AllFields", 2, ";", () =>
                    {
                        for (var i = 0; i < m_fields.Length; i++)
                        {
                            var fieldArr = m_fields[i];
                            writer.WriteRegion(((ObjectTypeId)i).ToString());
                            writer.NewArray("UpdateField", ",", () =>
                            {
                                foreach (var field in fieldArr)
                                {
                                    if (field != null)
                                    {
                                        writer.WriteCommentLine(field.FullName);
                                        var flags = Utility.GetSetIndicesEnum(field.Flags);

                                        var args = new[]
                                        {
                                            new KeyValuePair <string, object> ("Flags", flags.TransformList((flag) =>
                                                                                                            "UpdateFieldFlags." +
                                                                                                            flag)
                                                                               .
                                                                               ToString
                                                                                   (" | "))
                                            ,
                                            new KeyValuePair
                                            <
                                                string
                                                ,
                                                object
                                            >(
                                                "Group",
                                                "ObjectTypeId." +
                                                field
                                                .
                                                Group)
                                            ,
                                            new KeyValuePair
                                            <
                                                string
                                                ,
                                                object
                                            >(
                                                "Name",
                                                "\"" +
                                                field
                                                .
                                                Name +
                                                "\"")
                                            ,
                                            new KeyValuePair
                                            <
                                                string
                                                ,
                                                object
                                            >(
                                                "Offset",
                                                field
                                                .
                                                Offset)
                                            ,
                                            new KeyValuePair
                                            <
                                                string
                                                ,
                                                object
                                            >(
                                                "Size",
                                                field
                                                .
                                                Size)
                                            ,
                                            new KeyValuePair
                                            <
                                                string
                                                ,
                                                object
                                            >(
                                                "Type",
                                                "UpdateFieldType." +
                                                field
                                                .
                                                Type)
                                        };
                                        writer.NewInit(
                                            UpdateFieldTypeName,
                                            args, ",");
                                    }
                                    else
                                    {
                                        writer.WriteLine(
                                            "null,");
                                    }
                                }
                            });
                            writer.WriteEndRegion();
                            writer.WriteLine();
                        }
                    });
                    writer.WriteLine();

                    //writer.WriteStaticMethod("Init", () => {

                    //});

                    //writer.WriteStaticCTor(() => {
                    //    writer.Call("Init");
                    //});
                });
            }
        }
		public void Write(string fileName)
		{
			using (var writer = new CodeFileWriter(fileName,
			                                       "WCell.Constants.Updates", "UpdateFields",
			                                       CodeFileWriter.StaticTag + " " + CodeFileWriter.Class, 
												   "",
			                                       "System"))
			{
				writer.ExecuteSafely(() =>{
				                          	writer.WriteIndent("public static readonly ");
				                          	writer.Array(UpdateFieldTypeName, "AllFields", 2, ";", () =>{
				                          	                                                            	for (var i = 0;
				                          	                                                            	     i < m_fields.Length;
				                          	                                                            	     i++)
				                          	                                                            	{
				                          	                                                            		var fieldArr = m_fields[i];
				                          	                                                            		writer.WriteRegion(
				                          	                                                            			((ObjectTypeId) i).ToString());
				                          	                                                            		writer.NewArray("UpdateField", ",",
				                          	                                                            		                () =>{
				                          	                                                            		                     	foreach (
				                          	                                                            		                     		var field in
				                          	                                                            		                     			fieldArr)
				                          	                                                            		                     	{
				                          	                                                            		                     		if (field != null)
				                          	                                                            		                     		{
				                          	                                                            		                     			writer.
				                          	                                                            		                     				WriteCommentLine(
				                          	                                                            		                     				field.FullName);
				                          	                                                            		                     			var flags =
				                          	                                                            		                     				Utility.
				                          	                                                            		                     					GetSetIndicesEnum
				                          	                                                            		                     					(field.Flags);

				                          	                                                            		                     			var args = new[]
				                          	                                                            		                     			           	{
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Flags",
				                          	                                                            		                     			           			flags
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				TransformList
				                          	                                                            		                     			           				((
				                          	                                                            		                     			           					flag)
				                          	                                                            		                     			           				 =>
				                          	                                                            		                     			           				 "UpdateFieldFlags." +
				                          	                                                            		                     			           				 flag)
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				ToString
				                          	                                                            		                     			           				(" | "))
				                          	                                                            		                     			           		,
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Group",
				                          	                                                            		                     			           			"ObjectTypeId." +
				                          	                                                            		                     			           			field
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				Group)
				                          	                                                            		                     			           		,
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Name",
				                          	                                                            		                     			           			"\"" +
				                          	                                                            		                     			           			field
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				Name +
				                          	                                                            		                     			           			"\"")
				                          	                                                            		                     			           		,
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Offset",
				                          	                                                            		                     			           			field
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				Offset)
				                          	                                                            		                     			           		,
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Size",
				                          	                                                            		                     			           			field
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				Size)
				                          	                                                            		                     			           		,
				                          	                                                            		                     			           		new KeyValuePair
				                          	                                                            		                     			           			<
				                          	                                                            		                     			           			string
				                          	                                                            		                     			           			,
				                          	                                                            		                     			           			object
				                          	                                                            		                     			           			>(
				                          	                                                            		                     			           			"Type",
				                          	                                                            		                     			           			"UpdateFieldType." +
				                          	                                                            		                     			           			field
				                          	                                                            		                     			           				.
				                          	                                                            		                     			           				Type)
				                          	                                                            		                     			           	};
				                          	                                                            		                     			writer.NewInit(
				                          	                                                            		                     				UpdateFieldTypeName,
				                          	                                                            		                     				args, ",");
				                          	                                                            		                     		}
				                          	                                                            		                     		else
				                          	                                                            		                     		{
				                          	                                                            		                     			writer.WriteLine(
				                          	                                                            		                     				"null,");
				                          	                                                            		                     		}
				                          	                                                            		                     	}
				                          	                                                            		                });
				                          	                                                            		writer.WriteEndRegion();
				                          	                                                            		writer.WriteLine();
				                          	                                                            	}
				                          	});
				                          	writer.WriteLine();

				                          	//writer.WriteStaticMethod("Init", () => {

				                          	//});

				                          	//writer.WriteStaticCTor(() => {
				                          	//    writer.Call("Init");
				                          	//});
				});
			}
		}
 static void WriteVal(CodeFileWriter writer, string name, int value)
 {
     name = name.Replace("SPELL_FAILED_", "");
     name = name.ToCamelCase();
     writer.WriteLine("{0} = {1},", name, value);
 }
Exemple #20
0
        public static void WriteEnum <T>(
            string enumName,
            string group,
            IEnumerable <T> values,
            bool hexadecimal,
            Validator <T> validator,
            GetField <T> getNameDelegate,
            GetField <T> getCommentDelegate,
            GetField <T, string> getDuplNameDelegate,
            GetField <T> getIdDelegate)
        {
            var dir = Path.Combine(Dir, group);

            Directory.CreateDirectory(dir);

            string file = Path.Combine(dir, enumName + ".cs");

            Console.Write("Writing enum {0} to {1}...", enumName, new DirectoryInfo(file).FullName);

            bool first = true;

            using (var writer = new CodeFileWriter(new StreamWriter(file),
                                                   "WCell.Constants." + group, enumName, "enum"))
            {
                var lines = new List <string>(values.Count());

                var names = new Dictionary <string, int>(values.Count());

                foreach (var item in values)
                {
                    if (item == null || !validator(item))
                    {
                        continue;
                    }

                    string name = getNameDelegate(item).Replace("%", "Percent");

                    name = name.Replace("'s", "s");

                    string[] parts = Regex.Split(name, @"\s+|[^\w\d_]+", RegexOptions.None);

                    for (int i = 0; i < parts.Length; i++)
                    {
                        string part = parts[i];
                        if (part.Length == 0)
                        {
                            continue;
                        }
                        //if (part.Length > 1) {
                        //    part = part.ToLower();
                        string firstChar = part[0] + "";
                        part = firstChar.ToUpper() + part.Substring(1);
                        //}
                        //else {
                        //    part = part.ToUpper();
                        //}

                        parts[i] = part;
                    }

                    name = string.Join("", parts);

                    // against digits at the start
                    Match numMatch = NumRegex.Match(name);
                    if (numMatch.Success)
                    {
                        string num = GetNumString(numMatch.Value);
                        if (name.Length > num.Length)
                        {
                            name = num + name.Substring(numMatch.Value.Length, 1).ToUpper() + name.Substring(numMatch.Value.Length + 1);
                        }
                        else
                        {
                            name = num;
                        }
                    }

                    int count;
                    if (!names.TryGetValue(name, out count))
                    {
                        names.Add(name, 1);
                    }
                    else
                    {
                        names.Remove(name);
                        names.Add(name, ++count);

                        string duplName = null;
                        if (getDuplNameDelegate != null)
                        {
                            duplName = getDuplNameDelegate(item, name);
                        }

                        if (duplName != null)
                        {
                            name = duplName;
                        }
                        else
                        {
                            name = name + "_" + count;
                        }
                    }

                    string val = getIdDelegate(item);
                    if (hexadecimal)
                    {
                        try
                        {
                            int ival = Convert.ToInt32(val);

                            val = string.Format("0x{0:x}", ival);
                        }
                        catch { };
                    }

                    if (first)
                    {
                        first = false;
                        if (long.Parse(val) > 0)
                        {
                            writer.WriteLine("None = 0,");
                        }
                    }

                    string comment = "";
                    if (getCommentDelegate != null)
                    {
                        comment = getCommentDelegate(item);
                        if (comment != null)
                        {
                            string[] commentLines = comment.Split(new string[] { "\n", "\r\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
                            if (commentLines.Length > 0)
                            {
                                writer.StartSummary();
                                foreach (string line in commentLines)
                                {
                                    writer.WriteXmlCommentLine(line);
                                }
                                writer.EndSummary();
                            }
                        }
                    }
                    writer.WriteLine(string.Format("{0} = {1},", name, val));
                }

                writer.WriteLine("End");

                writer.Finish();

                Console.WriteLine(" Done.");
            }
        }
		public static void WriteWCellInfo()
		{
			using (var writer = new CodeFileWriter(Path.Combine(ToolConfig.WCellConstantsRoot, "WCellInfo.cs"),
												   "WCell.Constants", "WCellInfo", "static class", "", "WCell.Constants.Misc"))
			{
				writer.WriteSummary(@"The official codename of the current WCell build");
				writer.WriteLine("public const string Codename = \"Amethyst\";");
				writer.WriteLine();
				writer.WriteSummary(@"The color of the current WCell codename");
				writer.WriteLine(@"public const ChatColor CodenameColor = ChatColor.Purple;");
				writer.WriteLine();
				writer.WriteSummary("The version of the WoW Client that is currently supported.");
				writer.WriteLine("public static readonly ClientVersion RequiredVersion = new ClientVersion({0}, {1}, {2}, {3});",
				                 WoWFile.Version.Major, WoWFile.Version.Minor, WoWFile.Version.Revision, WoWFile.Version.Build);
				writer.WriteLine();
			}
		}
		static void WriteVal(CodeFileWriter writer, string name, int value)
		{
			name = name.Replace("SPELL_FAILED_", "");
			name = name.ToCamelCase();
			writer.WriteLine("{0} = {1},", name, value);
		}