Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / generator / ExcelGenerator.cs
@小李xl 小李xl on 7 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. OS.Execute("excel/DungeonShooting_ExcelTool.exe", new string[0], arr);
  15. foreach (var message in arr)
  16. {
  17. GD.Print(message);
  18. }
  19.  
  20. try
  21. {
  22. GeneratorActivityObjectInit();
  23. GD.Print("生成'src/framework/activity/ActivityObject_Init.cs'成功!");
  24. }
  25. catch (Exception e)
  26. {
  27. GD.PrintErr(e.ToString());
  28. }
  29. }
  30.  
  31. //生成初始化 ActivityObject 代码
  32. private static void GeneratorActivityObjectInit()
  33. {
  34. var text = File.ReadAllText("resource/config/ActivityObject.json");
  35. var array = JsonSerializer.Deserialize<System.Collections.Generic.Dictionary<string, System.Object>[]>(text);
  36. var code1 = "";
  37. var code2 = "";
  38.  
  39. foreach (var item in array)
  40. {
  41. var id = item["Id"];
  42. var remark = item["Remark"] + "";
  43. if (!string.IsNullOrEmpty(remark))
  44. {
  45. code1 += $" /// <summary>\n";
  46. code1 += $" /// {remark}\n";
  47. code1 += $" /// </summary>\n";
  48. }
  49. code1 += $" public const string Id_{id} = \"{id}\";\n";
  50. code2 += $" _activityRegisterMap.Add(\"{id}\", \"{item["Prefab"]}\");\n";
  51. }
  52. var str = $"/// <summary>\n";
  53. str += $"/// 根据配置表注册物体, 该类是自动生成的, 请不要手动编辑!\n";
  54. str += $"/// </summary>\n";
  55. str += $"public partial class ActivityObject\n";
  56. str += $"{{\n";
  57. str += $" /// <summary>\n";
  58. str += $" /// 存放所有在表中注册的物体的id\n";
  59. str += $" /// </summary>\n";
  60. str += $" public static class Ids\n";
  61. str += $" {{\n";
  62. str += code1;
  63. str += $" }}\n";
  64. str += $" private static void _InitRegister()\n";
  65. str += $" {{\n";
  66. str += code2;
  67. str += $" }}\n";
  68. str += $"}}\n";
  69. File.WriteAllText("src/framework/activity/ActivityObject_Init.cs", str);
  70. }
  71. }