123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- local function genCode(handler)
- local settings = handler.project:GetSettings("Publish").codeGeneration
- local codePkgName = handler:ToFilename(handler.pkg.name);
- local exportCodePath = handler.exportCodePath..'/'..codePkgName
- local namespaceName = codePkgName
- local ns = 'fgui'
-
- if settings.packageName~=nil and settings.packageName~='' then
- namespaceName = settings.packageName..'.'..namespaceName;
- end
-
- local classes = handler:CollectClasses(settings.ignoreNoname, settings.ignoreNoname, ns)
- handler:SetupCodeFolder(exportCodePath, "ts")
- local getMemberByName = settings.getMemberByName
- local classCnt = classes.Count
- local writer = CodeWriter.new({ blockFromNewLine=false, usingTabs=true })
- for i=0,classCnt-1 do
- local classInfo = classes[i]
- local members = classInfo.members
- writer:reset()
- writer:writeln('namespace %s', namespaceName)
- writer:startBlock()
- writer:writeln('export class %s extends %s', classInfo.className, classInfo.superClassName)
- writer:startBlock()
- local memberCnt = members.Count
- for j=0,memberCnt-1 do
- local memberInfo = members[j]
- if memberInfo.group==1 then
- writer:writeln('public %s:%s.controller.Controller;', memberInfo.name, ns)
- else
- writer:writeln('public %s:%s;', memberInfo.varName, memberInfo.type)
- end
- end
- writer:writeln('public static URL:string = "ui://%s%s";', handler.pkg.id, classInfo.resId)
- writer:writeln()
- writer:writeln('public static createInstance():%s', classInfo.className)
- writer:startBlock()
- writer:writeln('return <%s>(%s.UIPackage.createObject("%s", "%s"));', classInfo.className, ns, handler.pkg.name, classInfo.resName)
- writer:endBlock()
- writer:writeln()
- writer:writeln('protected onConstruct():void')
- writer:startBlock()
- for j=0,memberCnt-1 do
- local memberInfo = members[j]
- if memberInfo.group==0 then
- if getMemberByName then
- writer:writeln('this.%s = <%s>(this.getChild("%s"));', memberInfo.varName, memberInfo.type, memberInfo.name)
- else
- writer:writeln('this.%s = <%s>(this.getChildAt(%s));', memberInfo.varName, memberInfo.type, memberInfo.index)
- end
- elseif memberInfo.group==1 then
- if getMemberByName then
- writer:writeln('this.%s = this.getController("%s");', memberInfo.varName, memberInfo.name)
- else
- writer:writeln('this.%s = this.getControllerAt(%s);', memberInfo.varName, memberInfo.index)
- end
- else
- if getMemberByName then
- writer:writeln('this.%s = this.getTransition("%s");', memberInfo.varName, memberInfo.name)
- else
- writer:writeln('this.%s = this.getTransitionAt(%s);', memberInfo.varName, memberInfo.index)
- end
- end
- end
- writer:endBlock()
- writer:endBlock()
- writer:endBlock()
- writer:save(exportCodePath..'/'..classInfo.className..'.ts')
- end
- writer:reset()
- local binderName = codePkgName..'Binder'
- writer:writeln('namespace %s', namespaceName)
- writer:startBlock()
- writer:writeln()
- writer:writeln('export class %s', binderName)
- writer:startBlock()
- writer:writeln('public static bindAll():void')
- writer:startBlock()
- for i=0,classCnt-1 do
- local classInfo = classes[i]
- writer:writeln('%s.UIObjectFactory.setExtension(%s.URL, %s);', ns, classInfo.className, classInfo.className)
- end
- writer:endBlock()
- writer:endBlock()
- writer:endBlock()
-
- writer:save(exportCodePath..'/'..binderName..'.ts')
- end
- return genCode
|