"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.genCode = void 0; const csharp_1 = require("csharp"); const CodeWriter_1 = require("./CodeWriter"); function genCode(handler) { let settings = handler.project.GetSettings("Publish").codeGeneration; let codePkgName = handler.ToFilename(handler.pkg.name); //convert chinese to pinyin, remove special chars etc. handler.exportCodePath = handler.exportCodePath.replace(/\\/g, "/") + '/' + codePkgName; let exportCodePath = handler.exportCodePath let namespaceName = codePkgName; let isMonoGame = handler.project.type == csharp_1.FairyEditor.ProjectType.MonoGame; if (settings.packageName) namespaceName = settings.packageName + '.' + namespaceName; //CollectClasses(stripeMemeber, stripeClass, fguiNamespace) let classes = handler.CollectClasses(settings.ignoreNoname, settings.ignoreNoname, null); handler.SetupCodeFolder(exportCodePath, "cs"); //check if target folder exists, and delete old files let getMemberByName = settings.getMemberByName; let classCnt = classes.Count; let writer = new CodeWriter_1.default(); for (let i = 0; i < classCnt; i++) { let classInfo = classes.get_Item(i); let members = classInfo.members; writer.reset(); writer.writeln('using FairyGUI;'); // writer.writeln('using FairyGUI.Utils;'); writer.writeln(); writer.writeln('namespace %s', namespaceName); writer.startBlock(); writer.writeln('public partial class %s', classInfo.className); writer.startBlock(); writer.writeln('public %s %s;', classInfo.superClassName, "target"); let memberCnt = members.Count; for (let j = 0; j < memberCnt; j++) { let memberInfo = members.get_Item(j); writer.writeln('public %s %s;', memberInfo.type, memberInfo.varName); } writer.writeln('public const string URL = "ui://%s%s";', handler.pkg.id, classInfo.resId); writer.writeln('public const string PACKAGE_NAME = "%s";', handler.pkg.name); writer.writeln('public const string RES_NAME = "%s";', classInfo.resName); writer.writeln('private static %s _proxy;', classInfo.className); writer.writeln(); writer.writeln('public static %s Create(GObject gObject = null)', classInfo.className); writer.startBlock(); writer.writeln("var ui = new %s();", classInfo.className); writer.writeln("if(gObject == null)"); writer.writeln('\tui.target = (%s)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);', classInfo.superClassName); writer.writeln("else"); writer.writeln('\tui.target = (%s)gObject;', classInfo.superClassName); writer.writeln("ui.Init(ui.target);"); writer.writeln("return ui;"); writer.endBlock(); writer.writeln(); writer.writeln('public static %s Proxy(GObject gObject = null)', classInfo.className); writer.startBlock(); writer.writeln("if(_proxy == null)"); writer.startBlock(); writer.writeln("_proxy = new %s();", classInfo.className); writer.endBlock(); writer.writeln("var ui = _proxy;"); writer.writeln("if(gObject == null)"); writer.writeln('\tui.target = (%s)UIPackage.CreateObject(PACKAGE_NAME, RES_NAME);', classInfo.superClassName); writer.writeln("else"); writer.writeln('\tui.target = (%s)gObject;', classInfo.superClassName); writer.writeln("ui.Init(ui.target);"); writer.writeln("return ui;"); writer.endBlock(); writer.writeln(); writer.writeln('public static void ProxyEnd()'); writer.startBlock(); writer.writeln("if (_proxy != null)"); writer.startBlock(); writer.writeln("_proxy.Dispose();"); writer.endBlock(); writer.endBlock(); writer.writeln(); writer.writeln('public static void ClearProxy()'); writer.startBlock(); writer.writeln("ProxyEnd();"); writer.writeln("_proxy = null;"); writer.endBlock(); writer.writeln(); writer.writeln('private void Init(GComponent comp)'); writer.startBlock(); for (let j = 0; j < memberCnt; j++) { let memberInfo = members.get_Item(j); if (memberInfo.group == 0) { if (getMemberByName) { if (memberInfo.type.indexOf("UI_") == 0) { writer.writeln('%s = (%s)%s.Create(comp.GetChild("%s"));', memberInfo.varName, memberInfo.type, memberInfo.type, memberInfo.name); } else writer.writeln('%s = (%s)comp.GetChild("%s");', memberInfo.varName, memberInfo.type, memberInfo.name); } else { if (memberInfo.type.indexOf("UI_") == 0) { writer.writeln('%s = (%s)%s.Create(comp.GetChildAt(%s));', memberInfo.varName, memberInfo.type, memberInfo.type, memberInfo.index); } else writer.writeln('%s = (%s)comp.GetChildAt(%s);', memberInfo.varName, memberInfo.type, memberInfo.index); } } else if (memberInfo.group == 1) { if (getMemberByName) writer.writeln('%s = comp.GetController("%s");', memberInfo.varName, memberInfo.name); else writer.writeln('%s = comp.GetControllerAt(%s);', memberInfo.varName, memberInfo.index); } else { if (getMemberByName) writer.writeln('%s = comp.GetTransition("%s");', memberInfo.varName, memberInfo.name); else writer.writeln('%s = comp.GetTransitionAt(%s);', memberInfo.varName, memberInfo.index); } } writer.endBlock(); writer.writeln('public void Dispose(bool disposeTarget = false)'); writer.startBlock(); for (let j = 0; j < memberCnt; j++) { let memberInfo = members.get_Item(j); if (memberInfo.type.indexOf("UI_") == 0) { writer.writeln('%s.Dispose();', memberInfo.varName); } writer.writeln('%s = null;', memberInfo.varName); } writer.writeln('if(disposeTarget && target != null)'); writer.startBlock(); writer.writeln('target.RemoveFromParent();'); writer.writeln('target.Dispose();'); writer.endBlock(); writer.writeln('target = null;'); writer.endBlock(); writer.endBlock(); //class writer.endBlock(); //namepsace writer.save(exportCodePath + '/' + classInfo.className + '.cs'); } writer.reset(); } exports.genCode = genCode;