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