GenCode_TS.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.genCode = void 0;
  4. const csharp_1 = require("csharp");
  5. const CodeWriter_1 = require("./CodeWriter");
  6. function genCode(handler) {
  7. let settings = handler.project.GetSettings("Publish").codeGeneration;
  8. let codePkgName = handler.ToFilename(handler.pkg.name); //convert chinese to pinyin, remove special chars etc.
  9. let exportCodePath = handler.exportCodePath + '/' + codePkgName;
  10. let namespaceName = codePkgName;
  11. let ns = "fgui";
  12. let isThree = handler.project.type == csharp_1.FairyEditor.ProjectType.ThreeJS;
  13. if (settings.packageName)
  14. namespaceName = settings.packageName + '.' + namespaceName;
  15. //CollectClasses(stripeMemeber, stripeClass, fguiNamespace)
  16. let classes = handler.CollectClasses(settings.ignoreNoname, settings.ignoreNoname, ns);
  17. handler.SetupCodeFolder(exportCodePath, "ts"); //check if target folder exists, and delete old files
  18. let getMemberByName = settings.getMemberByName;
  19. let classCnt = classes.Count;
  20. let writer = new CodeWriter_1.default({ blockFromNewLine: false, usingTabs: true });
  21. for (let i = 0; i < classCnt; i++) {
  22. let classInfo = classes.get_Item(i);
  23. let members = classInfo.members;
  24. let references = classInfo.references;
  25. writer.reset();
  26. let refCount = references.Count;
  27. if (refCount > 0) {
  28. for (let j = 0; j < refCount; j++) {
  29. let ref = references.get_Item(j);
  30. writer.writeln('import %s from "./%s";', ref, ref);
  31. }
  32. writer.writeln();
  33. }
  34. if (isThree) {
  35. writer.writeln('import * as fgui from "fairygui-three";');
  36. if (refCount == 0)
  37. writer.writeln();
  38. }
  39. writer.writeln('export default class %s extends %s', classInfo.className, classInfo.superClassName);
  40. writer.startBlock();
  41. writer.writeln();
  42. let memberCnt = members.Count;
  43. for (let j = 0; j < memberCnt; j++) {
  44. let memberInfo = members.get_Item(j);
  45. writer.writeln('public %s:%s;', memberInfo.varName, memberInfo.type);
  46. }
  47. writer.writeln('public static URL:string = "ui://%s%s";', handler.pkg.id, classInfo.resId);
  48. writer.writeln();
  49. writer.writeln('public static createInstance():%s', classInfo.className);
  50. writer.startBlock();
  51. writer.writeln('return <%s>(%s.UIPackage.createObject("%s", "%s"));', classInfo.className, ns, handler.pkg.name, classInfo.resName);
  52. writer.endBlock();
  53. writer.writeln();
  54. writer.writeln('protected onConstruct():void');
  55. writer.startBlock();
  56. for (let j = 0; j < memberCnt; j++) {
  57. let memberInfo = members.get_Item(j);
  58. if (memberInfo.group == 0) {
  59. if (getMemberByName)
  60. writer.writeln('this.%s = <%s>(this.getChild("%s"));', memberInfo.varName, memberInfo.type, memberInfo.name);
  61. else
  62. writer.writeln('this.%s = <%s>(this.getChildAt(%s));', memberInfo.varName, memberInfo.type, memberInfo.index);
  63. }
  64. else if (memberInfo.group == 1) {
  65. if (getMemberByName)
  66. writer.writeln('this.%s = this.getController("%s");', memberInfo.varName, memberInfo.name);
  67. else
  68. writer.writeln('this.%s = this.getControllerAt(%s);', memberInfo.varName, memberInfo.index);
  69. }
  70. else {
  71. if (getMemberByName)
  72. writer.writeln('this.%s = this.getTransition("%s");', memberInfo.varName, memberInfo.name);
  73. else
  74. writer.writeln('this.%s = this.getTransitionAt(%s);', memberInfo.varName, memberInfo.index);
  75. }
  76. }
  77. writer.endBlock();
  78. writer.endBlock(); //class
  79. writer.save(exportCodePath + '/' + classInfo.className + '.ts');
  80. }
  81. writer.reset();
  82. let binderName = codePkgName + 'Binder';
  83. for (let i = 0; i < classCnt; i++) {
  84. let classInfo = classes.get_Item(i);
  85. writer.writeln('import %s from "./%s";', classInfo.className, classInfo.className);
  86. }
  87. if (isThree) {
  88. writer.writeln('import * as fgui from "fairygui-three";');
  89. writer.writeln();
  90. }
  91. writer.writeln();
  92. writer.writeln('export default class %s', binderName);
  93. writer.startBlock();
  94. writer.writeln('public static bindAll():void');
  95. writer.startBlock();
  96. for (let i = 0; i < classCnt; i++) {
  97. let classInfo = classes.get_Item(i);
  98. writer.writeln('%s.UIObjectFactory.setExtension(%s.URL, %s);', ns, classInfo.className, classInfo.className);
  99. }
  100. writer.endBlock(); //bindall
  101. writer.endBlock(); //class
  102. writer.save(exportCodePath + '/' + binderName + '.ts');
  103. }
  104. exports.genCode = genCode;