LogicDataGenerator.MessageDslParser.GenAllMessagesEnum C# (CSharp) Method

GenAllMessagesEnum() private method

private GenAllMessagesEnum ( string file, string enumName ) : void
file string
enumName string
return void
        internal void GenAllMessagesEnum(string file, string enumName, params string[] groups)
        {
            HashSet<string> expectGroups = new HashSet<string>(groups);
              if (expectGroups.Count <= 0) {
            expectGroups.Add(string.Empty);
              }
              try {
            string package;
            if (!string.IsNullOrEmpty(m_Package)) {
              package = m_Package;
            } else {
              package = "GameFrameworkMessage";
            }
            using (StreamWriter sw = new StreamWriter(file, true)) {
              sw.WriteLine("//----------------------------------------------------------------------------");
              sw.WriteLine("//!!!不要手动修改此文件,此文件由LogicDataGenerator按{0}生成!!!", m_DslFile);
              sw.WriteLine("//----------------------------------------------------------------------------");
              sw.WriteLine("using System;");
              sw.WriteLine("using System.Collections.Generic;");
              sw.WriteLine("");
              sw.WriteLine("namespace {0}", package);
              sw.WriteLine("{");
              sw.WriteLine("\tpublic enum {0}", enumName);
              sw.WriteLine("\t{");
              bool first = true;
              foreach (string message in m_SortedMessageEnums) {
            MessageDef messageDef;
            if (m_Messages.TryGetValue(message, out messageDef)) {
              if (!messageDef.m_DontGenEnum) {
                if (!string.IsNullOrEmpty(messageDef.m_EnumValue)) {
                  sw.WriteLine("\t\t{0} = {1},", message, messageDef.m_EnumValue);
                } else {
                  if (first) {
                    sw.WriteLine("\t\t{0} = 1,", message);
                  } else {
                    sw.WriteLine("\t\t{0},", message);
                  }
                }
                first = false;
              }
            }
              }
              sw.WriteLine("\t\tMaxNum");
              sw.WriteLine("\t}");
              sw.WriteLine("");
              sw.WriteLine("\tpublic static class {0}2Type", enumName);
              sw.WriteLine("\t{");
              sw.WriteLine("\t\tpublic static Type Query(int id)");
              sw.WriteLine("\t\t{");
              sw.WriteLine("\t\t\tType t;");
              sw.WriteLine("\t\t\ts_{0}2Type.TryGetValue(id, out t);", enumName);
              sw.WriteLine("\t\t\treturn t;");
              sw.WriteLine("\t\t}");
              sw.WriteLine("");
              sw.WriteLine("\t\tpublic static int Query(Type t)");
              sw.WriteLine("\t\t{");
              sw.WriteLine("\t\t\tint id;");
              sw.WriteLine("\t\t\ts_Type2{0}.TryGetValue(t, out id);", enumName);
              sw.WriteLine("\t\t\treturn id;");
              sw.WriteLine("\t\t}");
              sw.WriteLine("");
              sw.WriteLine("\t\tstatic {0}2Type()", enumName);
              sw.WriteLine("\t\t{");
              foreach (var messagePair in m_Messages) {
            string message = messagePair.Key;
            MessageDef messageDef = messagePair.Value;
            if (!messageDef.m_DontGenEnum && expectGroups.Contains(messageDef.m_GroupName)) {
              sw.WriteLine("\t\t\ts_{0}2Type.Add((int){1}.{2}, typeof({3}));", enumName, enumName, message, message);
              sw.WriteLine("\t\t\ts_Type2{0}.Add(typeof({1}), (int){2}.{3});", enumName, message, enumName, message);
            }
              }
              sw.WriteLine("\t\t}");
              sw.WriteLine("");
              sw.WriteLine("\t\tprivate static Dictionary<int, Type> s_{0}2Type = new Dictionary<int, Type>();", enumName);
              sw.WriteLine("\t\tprivate static Dictionary<Type, int> s_Type2{0} = new Dictionary<Type, int>();", enumName);
              sw.WriteLine("\t}");
              sw.WriteLine("}");
              sw.WriteLine("");
              sw.Close();
            }
              } catch (Exception ex) {
            Console.WriteLine(ex);
              }
        }

Usage Example

示例#1
0
 private static void GenServerData()
 {
     MessageDslParser parser = new MessageDslParser();
       parser.Init("DataProto/Data.dsl");
       parser.GenAllMessageWraps("DataProto/Data.cs", string.Empty);
       parser.GenAllMessagesEnum("DataProto/DataEnum.cs", "DataEnum", string.Empty);
       parser.GenAllMessageProtos("DataProto/Data.proto", string.Empty);
       parser.GenAllMessageDDL("DataProto/CreateDataTables.sql", string.Empty);
       parser.GenAllMessageDML("DataProto/DataDML.cs", "DataEnum", string.Empty);
 }
All Usage Examples Of LogicDataGenerator.MessageDslParser::GenAllMessagesEnum