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);
}
}