123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- local util = require 'xlua.util'
- App = CS.FairyEditor.App
- ProjectType = CS.FairyEditor.ProjectType
- fprint = function(msg)
- App.consoleView:Log(tostring(msg))
- end
- function printLeakingReferences()
- local str = 'These references from Lua to C# have not been released: \n'
- local registry = debug.getregistry()
- for k, v in pairs(registry) do
- if type(k) == 'number' and type(v) == 'function' and registry[v] == k then
- local info = debug.getinfo(v)
- str = str..string.format('%s:%d', info.short_src, info.linedefined)..'\n'
- end
- end
- str = str..'Try to solve it in a function with name \'onDestroy\'.'
- App.consoleView:LogWarning(str)
- end
- function fclass()
- local cls = {}
- cls.__index=cls
-
- function cls.new(...)
- local inst=setmetatable({}, cls)
- if inst.ctor then
- inst.ctor(inst, ...)
- end
- return inst
- end
-
- return cls
- end
- local codeGenerators = {
- [ProjectType.Flash] = require('GenCode_AS3'),
- [ProjectType.Starling] = require('GenCode_AS3'),
- [ProjectType.Layabox] = require('GenCode_TS'),
- [ProjectType.Egret] = require('GenCode_Egret'),
- [ProjectType.PIXI] = require('GenCode_PIXI'),
- [ProjectType.Unity] = require('GenCode_CSharp'),
- [ProjectType.CryEngine] = require('GenCode_CSharp'),
- [ProjectType.MonoGame] = require('GenCode_CSharp'),
- [ProjectType.Haxe] = require('GenCode_Haxe'),
- [ProjectType.Cocos2dx] = require('GenCode_CPP'),
- [ProjectType.Vision] = require('GenCode_CPP'),
- [ProjectType.CocosCreator] = require('GenCode_TS'),
- [ProjectType.ThreeJS] = require('GenCode_TS'),
- [ProjectType.CreateJS] = require('GenCode_TS')
- }
- function genCodeDefault(handler)
- local func = codeGenerators[handler.project.type]
- if func~=nil then
- func(handler)
- end
- end
- CodeWriter = fclass()
- function CodeWriter:ctor(config)
- config = config or {}
- self.blockStart = config.blockStart or '{'
- self.blockEnd = config.blockEnd or '}'
- self.blockFromNewLine = config.blockFromNewLine
- if self.blockFromNewLine==nil then self.blockFromNewLine = true end
- if config.usingTabs then
- self.indentStr = '\t'
- else
- self.indentStr = ' '
- end
- self.usingTabs = config.usingTabs
- self.endOfLine = config.endOfLine or '\n'
- self.fileMark = config.fileMark or '/** This is an automatically generated class by FairyGUI. Please do not modify it. **/'
- self.lines = {}
- self.indent = 0
- self:writeMark()
- end
- function CodeWriter:writeMark()
- table.insert(self.lines, self.fileMark)
- table.insert(self.lines, '')
- end
- function CodeWriter:writeln(format, ...)
- if not format then
- table.insert(self.lines, '')
- return
- end
- local str = ''
- for i=0,self.indent-1 do
- str = str..self.indentStr
- end
- str = str..string.format(format, ...)
- table.insert(self.lines, str)
- return self
- end
- function CodeWriter:startBlock()
- if self.blockFromNewLine or #self.lines==0 then
- self:writeln(self.blockStart)
- else
- local str = self.lines[#self.lines]
- self.lines[#self.lines] = str..' '..self.blockStart
- end
- self.indent = self.indent + 1
- return self
- end
- function CodeWriter:endBlock()
- self.indent = self.indent - 1
- self:writeln(self.blockEnd)
- return self
- end
- function CodeWriter:incIndent()
- self.indent = self.indent + 1
- return self
- end
- function CodeWriter:decIndent()
- self.indent = self.indent - 1
- return self
- end
- function CodeWriter:reset()
- if #self.lines>0 then self.lines = {} end
- self.indent = 0
- self:writeMark()
- end
- function CodeWriter:tostring()
- return table.concat(self.lines, self.endOfLine)
- end
- function CodeWriter:save(filePath)
- local str = table.concat(self.lines, self.endOfLine)
-
- CS.System.IO.File.WriteAllText(filePath, str)
- -- local file = io.open(filePath, 'w+b')
- -- io.output(file)
- -- io.write(str)
- -- io.close(file)
- end
|