Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / generator / ExcelGenerator.cs
  1. #if TOOLS
  2.  
  3. using System;
  4. using System.IO;
  5. using System.Text.Json;
  6. using Config;
  7. using Godot;
  8. using Array = Godot.Collections.Array;
  9.  
  10. namespace Generator;
  11.  
  12. public static class ExcelGenerator
  13. {
  14. public static void ExportExcel()
  15. {
  16. var arr = new Array();
  17. var excelPath = "excel/excelFile/";
  18. var jsonPath = "resource/config/";
  19. var codePath = "src/config/";
  20. OS.Execute("excel/DungeonShooting_ExcelTool.exe", new string[] { excelPath, jsonPath, codePath }, arr);
  21. foreach (var message in arr)
  22. {
  23. Debug.Log(message);
  24. }
  25.  
  26. try
  27. {
  28. GeneratorActivityObjectInit();
  29. Debug.Log("生成'src/framework/activity/ActivityObject_Init.cs'成功!");
  30. }
  31. catch (Exception e)
  32. {
  33. Debug.LogError(e.ToString());
  34. }
  35. }
  36.  
  37. //生成初始化 ActivityObject 代码
  38. private static void GeneratorActivityObjectInit()
  39. {
  40. var text = File.ReadAllText($"resource/config/{nameof(ExcelConfig.ActivityBase)}.json");
  41. var array = JsonSerializer.Deserialize<System.Collections.Generic.Dictionary<string, object>[]>(text);
  42. var code1 = "";
  43.  
  44. foreach (var item in array)
  45. {
  46. var id = item["Id"];
  47. var name = item["Name"] + "";
  48. var intro = item["Intro"] + "";
  49. code1 += $" /// <summary>\n";
  50. code1 += $" /// 名称: {name} <br/>\n";
  51. code1 += $" /// 简介: {intro.Replace("\n", " <br/>\n /// ")}\n";
  52. code1 += $" /// </summary>\n";
  53. code1 += $" public const string Id_{id} = \"{id}\";\n";
  54. }
  55. var str = $"using Config;\n\n";
  56. str += $"// 根据配置表注册物体, 该类是自动生成的, 请不要手动编辑!\n";
  57. str += $"public partial class ActivityObject\n";
  58. str += $"{{\n";
  59. str += $" /// <summary>\n";
  60. str += $" /// 存放所有在表中注册的物体的id\n";
  61. str += $" /// </summary>\n";
  62. str += $" public static class Ids\n";
  63. str += $" {{\n";
  64. str += code1;
  65. str += $" }}\n";
  66. str += $"}}\n";
  67. File.WriteAllText("src/framework/activity/ActivityObject_Init.cs", str);
  68. }
  69. }
  70.  
  71. #endif