123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System.Text;
- namespace etoy
- {
- class TSGameCfgGenerater : IGenerater
- {
- // 表导入
- private const string TableTypeImportArea = "<#TableTypeImportArea>";
- // 表数组定义
- private const string TableRepoProxyDefineArea = "<#TableRepoProxyDefineArea>";
- // 表数组赋值
- private const string TableRepoProxyAssignArea = "<#TableRepoProxyAssignArea>";
- private const string CLASS_FILE_NAME = "GameCfg.ts";
- private string CodeTemplatePath => Path.Combine(Environment.CurrentDirectory, "Configs/TSTemplates", CLASS_FILE_NAME);
- public void Generate(Context context)
- {
- var tables = context.Blackboard.Tables;
- var sbTableImports = new StringBuilder();
- var sbTableRepoProxyDefines = new StringBuilder();
- var sbTableRepoProxyAssigns = new StringBuilder();
- var tableIdx = 0;
- foreach (var table in tables)
- {
- if (table.TableTag.HasFlag(TableTag.Server))
- {
- var tableName = table.Name;
- // 主键
- var pkFieldInfo = table.GetPKFieldInfo();
- sbTableImports.Append($", xls{tableName}");
- tableIdx++;
- if (tableIdx % 10 == 0)
- { // 10个换一行
- sbTableImports.Append('\n');
- }
- sbTableRepoProxyDefines.AppendLine($"static {tableName}: ConfProxy<xls{tableName}>");
- sbTableRepoProxyAssigns.AppendLine($" Gamecfg.{tableName} = new ConfProxy(\"{tableName}\",xls.xls{tableName} ,\"{pkFieldInfo.FieldName}\")");
- }
- }
- var gameCfgText = File.ReadAllText(CodeTemplatePath);
- gameCfgText = gameCfgText.Replace(TableTypeImportArea, sbTableImports.ToString());
- gameCfgText = gameCfgText.Replace(TableRepoProxyDefineArea, sbTableRepoProxyDefines.ToString());
- gameCfgText = gameCfgText.Replace(TableRepoProxyAssignArea, sbTableRepoProxyAssigns.ToString());
- var gameCfgPath = Path.Combine(context.Option.ServerCodeOutput, CLASS_FILE_NAME);
- File.WriteAllText(gameCfgPath, gameCfgText, Encoding.UTF8);
- }
- }
- }
|