//从lua读取每个参数的值 static void paraseParam(StreamWriter n, ParamTypeData paramType, int i, int index) { string variableExp = string.Format("param{0}", i); writeLine(n, "{0} {1} = default({0});", paramType.csFullTypeName, variableExp); paramType.ReadFromLua2CS(n, index, variableExp,0); }
//从Lua读数据写回cs的对象属性 static void writeWriteProp(StreamWriter n, Type objt, Type propt, string propName, bool isStatic, bool isEnum ) { ParamTypeData objT = new ParamTypeData(objt); string objectTypeFullName = objT.csFullTypeName; writeLine(n, "//---------------------------------"); funcNames.Add("set_" + propName); n.WriteLine("[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]"); ParamTypeData paramType = new ParamTypeData(propt); writeLine(n,"public static int set_{0}(IntPtr L)", propName); writeLine(n,"{"); WriteTryBegin(n); int index = 1; if (isStatic == false) { index = 2; writeSelf(n,objT); } string owner = isStatic ? objectTypeFullName : "self"; string variableExp = string.Format("{0}.{1}", owner, propName); paramType.ReadFromLua2CS(n, index, variableExp,0); if (isStatic == false && objt.IsValueType) { writeLine(n, "IntPtr idptr = LuaDLL.lua_touserdata(L, 1);"); n.WriteLine("objs[idptr.ToInt64()] = self;"); } n.WriteLine("return 0;"); WriteTryEnd(n); n.WriteLine("}"); n.WriteLine(""); n.WriteLine(""); n.WriteLine(""); }