CSharpTableLoaderGenerater.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Text;
  2. namespace etoy
  3. {
  4. /// <summary>
  5. /// 客户端配置表加载代码
  6. /// </summary>
  7. class CSharpTableLoaderGenerater : IGenerater
  8. {
  9. const string TableRepoLoadArea = "<#TableRepoLoadArea>";
  10. public void Generate(Context context)
  11. {
  12. var path = context.Option.ClientDatabaseLoadCodePath;
  13. if (string.IsNullOrEmpty(path))
  14. {
  15. return;
  16. }
  17. var fileName = Path.GetFileName(path);
  18. var templatePath = Path.Combine(Environment.CurrentDirectory, "Configs/CSTemplates", fileName);
  19. if (!File.Exists(templatePath))
  20. {
  21. return;
  22. }
  23. // 删除旧文件
  24. if (File.Exists(path))
  25. {
  26. File.Delete(path);
  27. }
  28. var sbTableRepoLoadArea = new StringBuilder();
  29. var tables = context.Blackboard.Tables;
  30. foreach (var table in tables)
  31. {
  32. if (table.TableTag.HasFlag(TableTag.Client))
  33. {
  34. sbTableRepoLoadArea.AppendLine($" {table.Name}TableRepo.LoadAsync().Join(group);");
  35. }
  36. }
  37. var templateText = File.ReadAllText(templatePath);
  38. templateText = templateText.Replace(TableRepoLoadArea, sbTableRepoLoadArea.ToString());
  39. File.WriteAllText(path, templateText, Encoding.UTF8);
  40. }
  41. }
  42. }