main.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import { FairyGUI, FairyEditor, System } from 'csharp';
  2. import { genCodeTs } from './GenCode_TypeScript';
  3. import { genCodeCS } from './GenCode_CSharp';
  4. const App = FairyEditor.App;
  5. App.pluginManager.LoadUIPackage(App.pluginManager.basePath + "/" + eval("__dirname") + '/CustomInspector')
  6. class ExportCodeFlagInspector extends FairyEditor.View.PluginInspector {
  7. private combo: FairyGUI.GButton;
  8. private ctrl_ref: FairyGUI.Controller
  9. public constructor() {
  10. super();
  11. this.panel = FairyGUI.UIPackage.CreateObject("CustomInspector", "ExportCodeFlag").asCom;
  12. this.ctrl_ref = this.panel.GetController("ref")
  13. this.combo = this.panel.GetChild("check").asButton;
  14. this.combo.onChanged.Add(() => {
  15. let obj = App.activeDoc.inspectingTarget
  16. //use obj.docElement.SetProperty('xxx',..) instead of obj.xxx = ... to enable undo/redo mechanism
  17. // obj.docElement.SetProperty("customData", this.combo.value)
  18. // console.log("set gencode:" + obj._res.packageItem.id)
  19. if (obj.docElement.isRoot) {
  20. obj.docElement.SetScriptData("gencode" + obj._res.packageItem.id, this.combo.selected ? "1" : "0")
  21. } else {
  22. obj.parent.docElement.SetScriptData("gencode" + obj._res.packageItem.id, this.combo.selected ? "1" : "0")
  23. }
  24. });
  25. this.updateAction = () => { return this.updateUI(); };
  26. }
  27. private updateUI(): boolean {
  28. let sels = App.activeDoc.inspectingTargets
  29. let obj = sels.get_Item(0) as FairyEditor.FComponent
  30. this.ctrl_ref.SetSelectedPage("false")
  31. if (obj.docElement.isRoot) {
  32. this.combo.selected = obj.scriptData.GetAttribute("gencode" + obj._res.packageItem.id) == "1"
  33. } else {
  34. this.combo.selected = obj.parent.scriptData.GetAttribute("gencode" + obj._res.packageItem.id) == "1"
  35. this.ctrl_ref.SetSelectedPage("true")
  36. // if (obj._pkg.name != obj.parent.pkg.name) {
  37. // this.ctrl_ref.SetSelectedPage("true")
  38. // } else {
  39. // this.ctrl_ref.SetSelectedPage("false")
  40. // }
  41. }
  42. // console.log("current gencode " + obj._res.packageItem.id + " : " + this.combo.selected)
  43. return true; //if everything is ok, return false to hide the inspector
  44. }
  45. }
  46. //Register a inspector
  47. App.inspectorView.AddInspector(() => new ExportCodeFlagInspector(), "GenCodeFlag", "标记是否生成代码");
  48. //Condition to show it
  49. //App.docFactory.ConnectInspector("GenCodeFlag", "mixed", true, false);
  50. App.docFactory.ConnectInspector("GenCodeFlag", "component", false, false);
  51. App.docFactory.ConnectInspector("GenCodeFlag", "component", true, false);
  52. class LangFlagInspector extends FairyEditor.View.PluginInspector {
  53. private combo: FairyGUI.GButton;
  54. public constructor() {
  55. super();
  56. this.panel = FairyGUI.UIPackage.CreateObject("CustomInspector", "LangFlag").asCom;
  57. this.combo = this.panel.GetChild("check").asButton;
  58. this.combo.onChanged.Add(() => {
  59. let obj = App.activeDoc.inspectingTarget
  60. //use obj.docElement.SetProperty('xxx',..) instead of obj.xxx = ... to enable undo/redo mechanism
  61. // obj.docElement.SetProperty("customData", this.combo.value)
  62. console.log("set lang:" + obj.id)
  63. if (obj.docElement.isRoot) {
  64. obj.docElement.SetScriptData("lang" + obj.id, this.combo.selected ? "1" : "0")
  65. } else {
  66. obj.parent.docElement.SetScriptData("lang" + obj.id, this.combo.selected ? "1" : "0")
  67. }
  68. });
  69. this.updateAction = () => { return this.updateUI(); };
  70. }
  71. private updateUI(): boolean {
  72. let sels = App.activeDoc.inspectingTargets
  73. let obj = sels.get_Item(0) as FairyEditor.FComponent
  74. // console.log(obj.objectType)
  75. if (obj.objectType == "component") {
  76. let ext = checkOtherPackageItemSuperClassType(obj._res.packageItem)
  77. // console.log(ext)
  78. if(!(ext == "Button" || ext == "Label")) {
  79. return false
  80. }
  81. } else if (!(obj.objectType == "loader" || obj.objectType == "text" || obj.objectType == "richtext")) {
  82. return false
  83. }
  84. console.log("lang" + obj.id)
  85. if (obj.docElement.isRoot) {
  86. this.combo.selected = obj.scriptData.GetAttribute("lang" + obj.id) == "1"
  87. } else {
  88. this.combo.selected = obj.parent.scriptData.GetAttribute("lang" + obj.id) == "1"
  89. }
  90. return true; //if everything is ok, return false to hide the inspector
  91. }
  92. }
  93. function checkOtherPackageItemSuperClassType(pkgItem: FairyEditor.FPackageItem) {
  94. let file = System.IO.File.ReadAllText(pkgItem.file)
  95. let xml = new FairyGUI.Utils.XML(file)
  96. let ext = xml?.GetAttribute("extention")
  97. return ext
  98. }
  99. //Register a inspector
  100. App.inspectorView.AddInspector(() => new LangFlagInspector(), "LangFlag", "标记是否多语言对象");
  101. //Condition to show it
  102. App.docFactory.ConnectInspector("LangFlag", "mixed", false, false);
  103. App.docFactory.ConnectInspector("LangFlag", "loader", false, false);
  104. App.docFactory.ConnectInspector("LangFlag", "text", false, false);
  105. App.docFactory.ConnectInspector("LangFlag", "richtext", false, false);
  106. // -------------------开始生成代码----------------------------
  107. function onPublish(handler: FairyEditor.PublishHandler) {
  108. if (!handler.genCode) return;
  109. handler.genCode = false; //prevent default output
  110. console.log('开始生成CS代码');
  111. genCodeTs(handler);
  112. // genCodeCS(handler);
  113. }
  114. function onDestroy() {
  115. //do cleanup here
  116. }
  117. export { onPublish, onDestroy };