Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / generator / ExcelGenerator.cs
@lijincheng lijincheng on 2 Aug 2023 2 KB 小修改
  1. #if TOOLS
  2.  
  3. using System;
  4. using System.IO;
  5. using System.Text.Json;
  6. using Godot;
  7. using Array = Godot.Collections.Array;
  8.  
  9. namespace Generator;
  10.  
  11. public static class ExcelGenerator
  12. {
  13. public static void ExportExcel()
  14. {
  15. var arr = new Array();
  16. var excelPath = "excel/excelFile/";
  17. var jsonPath = "resource/config/";
  18. var codePath = "src/config/";
  19. OS.Execute("excel/DungeonShooting_ExcelTool.exe", new string[] { excelPath, jsonPath, codePath }, arr);
  20. foreach (var message in arr)
  21. {
  22. GD.Print(message);
  23. }
  24.  
  25. try
  26. {
  27. GeneratorActivityObjectInit();
  28. GD.Print("生成'src/framework/activity/ActivityObject_Init.cs'成功!");
  29. }
  30. catch (Exception e)
  31. {
  32. GD.PrintErr(e.ToString());
  33. }
  34. }
  35.  
  36. //生成初始化 ActivityObject 代码
  37. private static void GeneratorActivityObjectInit()
  38. {
  39. var text = File.ReadAllText("resource/config/ActivityObject.json");
  40. var array = JsonSerializer.Deserialize<System.Collections.Generic.Dictionary<string, System.Object>[]>(text);
  41. var code1 = "";
  42. var code2 = "";
  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. code2 += $" _activityRegisterMap.Add(\"{id}\", new RegisterActivityData(\"{item["Prefab"]}\", ExcelConfig.ActivityObject_Map[\"{id}\"]));\n";
  55. }
  56. var str = $"using Config;\n\n";
  57. str += $"/// <summary>\n";
  58. str += $"/// 根据配置表注册物体, 该类是自动生成的, 请不要手动编辑!\n";
  59. str += $"/// </summary>\n";
  60. str += $"public partial class ActivityObject\n";
  61. str += $"{{\n";
  62. str += $" /// <summary>\n";
  63. str += $" /// 存放所有在表中注册的物体的id\n";
  64. str += $" /// </summary>\n";
  65. str += $" public static class Ids\n";
  66. str += $" {{\n";
  67. str += code1;
  68. str += $" }}\n";
  69. str += $" private static void _InitRegister()\n";
  70. str += $" {{\n";
  71. str += code2;
  72. str += $" }}\n";
  73. str += $"}}\n";
  74. File.WriteAllText("src/framework/activity/ActivityObject_Init.cs", str);
  75. }
  76. }
  77.  
  78. #endif