You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
4.5 KiB
98 lines
4.5 KiB
"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. |
|
let exportCodePath = handler.exportCodePath + '/' + codePkgName; |
|
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 : %s', classInfo.className, classInfo.superClassName); |
|
writer.startBlock(); |
|
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(); |
|
writer.writeln('public static %s CreateInstance()', classInfo.className); |
|
writer.startBlock(); |
|
writer.writeln('return (%s)UIPackage.CreateObject("%s", "%s");', classInfo.className, handler.pkg.name, classInfo.resName); |
|
writer.endBlock(); |
|
writer.writeln(); |
|
if (isMonoGame) { |
|
writer.writeln("protected override void OnConstruct()"); |
|
writer.startBlock(); |
|
} |
|
else { |
|
writer.writeln('public override void ConstructFromXML(XML xml)'); |
|
writer.startBlock(); |
|
writer.writeln('base.ConstructFromXML(xml);'); |
|
writer.writeln(); |
|
} |
|
for (let j = 0; j < memberCnt; j++) { |
|
let memberInfo = members.get_Item(j); |
|
if (memberInfo.group == 0) { |
|
if (getMemberByName) |
|
writer.writeln('%s = (%s)GetChild("%s");', memberInfo.varName, memberInfo.type, memberInfo.name); |
|
else |
|
writer.writeln('%s = (%s)GetChildAt(%s);', memberInfo.varName, memberInfo.type, memberInfo.index); |
|
} |
|
else if (memberInfo.group == 1) { |
|
if (getMemberByName) |
|
writer.writeln('%s = GetController("%s");', memberInfo.varName, memberInfo.name); |
|
else |
|
writer.writeln('%s = GetControllerAt(%s);', memberInfo.varName, memberInfo.index); |
|
} |
|
else { |
|
if (getMemberByName) |
|
writer.writeln('%s = GetTransition("%s");', memberInfo.varName, memberInfo.name); |
|
else |
|
writer.writeln('%s = GetTransitionAt(%s);', memberInfo.varName, memberInfo.index); |
|
} |
|
} |
|
writer.endBlock(); |
|
writer.endBlock(); //class |
|
writer.endBlock(); //namepsace |
|
writer.save(exportCodePath + '/' + classInfo.className + '.cs'); |
|
} |
|
writer.reset(); |
|
let binderName = codePkgName + 'Binder'; |
|
writer.writeln('using FairyGUI;'); |
|
writer.writeln(); |
|
writer.writeln('namespace %s', namespaceName); |
|
writer.startBlock(); |
|
writer.writeln('public class %s', binderName); |
|
writer.startBlock(); |
|
writer.writeln('public static void BindAll()'); |
|
writer.startBlock(); |
|
for (let i = 0; i < classCnt; i++) { |
|
let classInfo = classes.get_Item(i); |
|
writer.writeln('UIObjectFactory.SetPackageItemExtension(%s.URL, typeof(%s));', classInfo.className, classInfo.className); |
|
} |
|
writer.endBlock(); //bindall |
|
writer.endBlock(); //class |
|
writer.endBlock(); //namespace |
|
writer.save(exportCodePath + '/' + binderName + '.cs'); |
|
} |
|
exports.genCode = genCode;
|
|
|