internal void GenAllMessageDML(string file, string enumName, params string[] groups)
{
HashSet<string> expectGroups = new HashSet<string>(groups);
if (expectGroups.Count <= 0) {
expectGroups.Add(string.Empty);
}
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("using System.Runtime.InteropServices;");
sw.WriteLine("using System.IO;");
sw.WriteLine("using System.Text;");
sw.WriteLine("using System.Data;");
sw.WriteLine("using System.Data.Common;");
sw.WriteLine("using MySql.Data.MySqlClient;");
if (!string.IsNullOrEmpty(m_Package)) {
sw.WriteLine("using {0};", m_Package);
}
sw.WriteLine("using GameFramework;");
sw.WriteLine();
sw.WriteLine("namespace GameFramework");
sw.WriteLine("{");
sw.WriteLine("\tinternal static class DataDML");
sw.WriteLine("\t{");
sw.WriteLine();
sw.WriteLine("\t\tinternal static void Save(int msgId, bool isValid, int dataVersion, byte[] data)");
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tswitch(msgId){");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\tSave{0}(isValid, dataVersion, data);", messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\tbreak;");
}
}
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t}");
sw.WriteLine("\t\tinternal static int BatchSave(int msgId, List<bool> validList, List<byte[]> dataList, int dataVersion)");
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tint count = 0;");
sw.WriteLine("\t\t\tswitch(msgId){");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\tcount = BatchSave{0}(validList, dataList, dataVersion);", messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\tbreak;");
}
}
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t\treturn count;");
sw.WriteLine("\t\t}");
sw.WriteLine("\t\tinternal static List<GeneralRecordData> LoadAll(int msgId, int start, int count)");
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tif(start<0)");
sw.WriteLine("\t\t\t\tstart=0;");
sw.WriteLine("\t\t\tif(count<=0)");
sw.WriteLine("\t\t\t\tcount=int.MaxValue;");
sw.WriteLine("\t\t\tswitch(msgId){");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\treturn LoadAll{0}(start, count);", messageDef.m_TypeName);
}
}
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t\treturn null;");
sw.WriteLine("\t\t}");
sw.WriteLine("\t\tinternal static GeneralRecordData LoadSingle(int msgId, List<string> primaryKeys)");
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tswitch(msgId){");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\treturn LoadSingle{0}(primaryKeys);", messageDef.m_TypeName);
}
}
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t\treturn null;");
sw.WriteLine("\t\t}");
sw.WriteLine("\t\tinternal static List<GeneralRecordData> LoadMulti(int msgId, List<string> foreignKeys)");
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tswitch(msgId){");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t\treturn LoadMulti{0}(foreignKeys);", messageDef.m_TypeName);
}
}
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t\treturn null;");
sw.WriteLine("\t\t}");
foreach (var messagePair in m_Messages) {
string message = messagePair.Key;
MessageDef messageDef = messagePair.Value;
if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
GenMessageLoadAll(messageDef, sw);
GenMessageLoadSingle(messageDef, sw);
GenMessageLoadMulti(messageDef, sw);
GenMessageSave(messageDef, sw);
GenMessageBatchSave(messageDef, sw);
}
}
sw.WriteLine();
sw.WriteLine("\t}");
sw.WriteLine("}");
sw.Close();
}
}