Пример #1
0
    //----------------------内部调用-------------------------
    #region 内部调用
    /// <summary>
    /// 生成Data脚本
    /// </summary>
    void sWriteFile(DataStructFileData fileData)
    {
        if (fileData.mIsCS)
        {
            //生成C#脚本
            StringBuilder sb = new StringBuilder();
            NetCmdXmlParser.sWriteFileHeadComment(sb, fileData.mClassName, fileData.mDescribe);                       //生成注释的文件头
            NetCmdXmlParser.sWriteFileHeadNameSpace(sb);                                                              //写命名空间
            sWriteCSFileContent(sb, fileData);                                                                        //将解析到的xml生成string,并赋值到sb
            //写文件
            string outFilePath = NetCmdXmlParser.targetFileBasePath + paramOutFilePath + fileData.mClassName + ".cs"; //生成文件路径
            NetCmdXmlParser.sWriteStringToFile(outFilePath, sb);                                                      //生成文件
        }
        if (fileData.mIsLua)
        {
            //生成Lua脚本
            StringBuilder lua_sb = new StringBuilder();
            NetCmdXmlParser.sWriteLuaFileHeadComment(lua_sb, fileData.mClassName, fileData.mDescribe);                       //生成注释的文件头
            sWriteLuaFileContent(lua_sb, fileData);                                                                          //将解析到的xml生成string,并赋值到lua_sb
            //写Lua文件
            string outLuaFilePath = NetCmdXmlParser.targetLuaFileBasePath + paramOutFilePath + fileData.mClassName + ".lua"; //生成文件路径
            NetCmdXmlParser.sWriteStringToFile(outLuaFilePath, lua_sb);                                                      //生成文件

            //放入NetCmdLuaHandler中进行引用,以便加载
            LuaScriptParserTool.AddLuaRequireString(constPackageName + "." + fileData.mClassName);
        }
    }
Пример #2
0
    //----------------------内部调用-------------------------
    #region 内部调用
    /// <summary>
    /// 生成base脚本
    /// </summary>
    void sWriteFile(AllBaseCmdFileData fileData)
    {
        if (fileData.mIsCS)
        {
            //生成C#脚本
            StringBuilder sb = new StringBuilder();
            NetCmdXmlParser.sWriteFileHeadComment(sb, fileData.mClassName, fileData.mDescribe); //生成注释的文件头
            NetCmdXmlParser.sWriteFileHeadNameSpace(sb);                                        //写命名空间引用
            sWriteCSFileContent(sb, fileData);                                                  //将解析到的xml生成string,并赋值到sb
            //写文件
            string outFilePath = NetCmdXmlParser.targetFileBasePath + baseCmdOutFilePath + fileData.mClassName + ".cs";
            NetCmdXmlParser.sWriteStringToFile(outFilePath, sb);
        }

        if (fileData.mIsLua)
        {
            //生成Lua脚本
            StringBuilder lua_db = new StringBuilder();
            NetCmdXmlParser.sWriteLuaFileHeadComment(lua_db, fileData.mClassName, fileData.mDescribe); //生成注释的文件头
            sWriteLuaFileContent(lua_db, fileData);                                                    //将解析到的xml生成string,并赋值到sb
            //写Lua文件
            string outLuaFilePath = NetCmdXmlParser.targetLuaFileBasePath + baseCmdOutFilePath + fileData.mClassName + ".lua";
            NetCmdXmlParser.sWriteStringToFile(outLuaFilePath, lua_db);

            //放入NetCmdLuaHandler中进行引用,以便加载
            LuaScriptParserTool.AddLuaRequireString(LuaScriptParserTool.CmdBaseDirectory + "." + fileData.mClassName);
        }
    }
Пример #3
0
    //----------------------内部调用-------------------------
    #region 内部调用
    /// <summary>
    /// 生成Const脚本
    /// </summary>
    void sWriteFile(ConstFileData fileData)
    {
        //生成C#脚本
        StringBuilder sb = new StringBuilder();

        NetCmdXmlParser.sWriteFileHeadComment(sb, fileData.mClassName, "网络消息所用常量"); //生成注释的文件头
        NetCmdXmlParser.sWriteFileHeadNameSpace(sb);                                //写命名空间
        sWriteCSFileContent(sb, fileData);                                          //将解析到的xml生成string,并赋值到sb
        //写文件
        string outFilePath = NetCmdXmlParser.targetFileBasePath + constOutFilePath + fileData.mClassName + ".cs";

        NetCmdXmlParser.sWriteStringToFile(outFilePath, sb);

        //生成Lua脚本
        StringBuilder lua_sb = new StringBuilder();

        NetCmdXmlParser.sWriteLuaFileHeadComment(lua_sb, fileData.mClassName, "网络消息所用常量"); //生成注释的文件头
        sWriteLuaFileContent(lua_sb, fileData);                                            //将解析到的xml生成string,并赋值到sb
        //写文件
        string outLuaFilePath = NetCmdXmlParser.targetLuaFileBasePath + constOutFilePath + fileData.mClassName + ".lua";

        NetCmdXmlParser.sWriteStringToFile(outLuaFilePath, lua_sb);

        //放入NetCmdLuaHandler中进行引用,以便加载
        LuaScriptParserTool.AddLuaRequireString(constPackageName + "." + fileData.mClassName);      //加入const的引用
    }
Пример #4
0
    //写消息处理方法
    public static void sWriteNetHandlerFile()
    {
        //C#
        StringBuilder sb = new StringBuilder();

        NetCmdXmlParser.sWriteFileHeadComment(sb, className, "handler总文件"); //总的handle注释
        NetCmdXmlParser.sWriteFileHeadNameSpace(sb);                        //加入命名空间
        sWriteCSFileContent(sb, mCmdBigDic);                                //解析字典生成string
        //写文件
        string outFilePath = NetCmdXmlParser.targetFileBasePath + "/" + className + ".cs";

        NetCmdXmlParser.sWriteStringToFile(outFilePath, sb);
        //Lua
        StringBuilder sb_lua = new StringBuilder();

        NetCmdXmlParser.sWriteLuaFileHeadComment(sb_lua, LuaHandler, "handler总文件"); //总的handle注释
        sWriteLuaFileContent(sb_lua, mCmdBigDic);                                   //解析字典生成string
        //写文件
        string outFilePath_lua = NetCmdXmlParser.targetLuaFileBasePath + "/" + LuaHandler + ".lua";

        NetCmdXmlParser.sWriteStringToFile(outFilePath_lua, sb_lua);
    }
Пример #5
0
    void sWriteCSFileContent(string fileType, CmdStructFileData fileData)
    {
        StringBuilder sb = new StringBuilder();

        NetCmdXmlParser.sWriteFileHeadComment(sb, fileData.mClassName, fileData.mDescribe); //生成注释的文件头
        NetCmdXmlParser.sWriteFileHeadNameSpace(sb);                                        //生成命名空间
        //所需XML数据
        List <string> declareStringList = new List <string>();
        List <string> packStringList    = new List <string>();
        List <string> unpackStringList  = new List <string>();
        List <string> ctorStringList    = new List <string>(); //初始化字符串

        for (int i = 0; i < fileData.mCmdList.Count; ++i)
        {
            ParamDataOutString outString = CmdParserComUitls.CmdParamParserDeclare_CS(fileData.mCmdList[i], fileData.mClassName, true);
            declareStringList.AddRange(outString.mOutDeclareString.ToArray());
            packStringList.AddRange(outString.mOutPackString.ToArray());
            unpackStringList.AddRange(outString.mOutUnpackString.ToArray());
            ctorStringList.AddRange(outString.mOutCtorString.ToArray());
        }

        string filePathName = "";

        if (fileData.mPathName != null)
        {
            filePathName = fileData.mPathName + "/";
        }
        string outFilePath = "";  //生成文件位置
        bool   _isWrite    = false;

        switch (fileType)
        {
        case "C#_C":
            outFilePath = NetCmdXmlParser.targetFileBasePath + cmdOutFilePath_C + filePathName + fileData.mClassName + "_C.cs";
            sWriteCSFileContent_C(sb, fileData, declareStringList, packStringList);
            _isWrite = true;
            break;

        case "C#_S":
            outFilePath = NetCmdXmlParser.targetFileBasePath + cmdOutFilePath_S + filePathName + fileData.mClassName + "_S.cs";
            sWriteCSFileContent_S(sb, fileData, declareStringList, unpackStringList, ctorStringList);
            _isWrite = true;
            break;

        case "C#_Handler":
            outFilePath = NetCmdXmlParser.targetFileBasePath + cmdOutFilePath_Handler + filePathName + fileData.mClassName + "_Handler.cs";
            if (!File.Exists(outFilePath))
            {
                sWriteCSFileContent_Handler(sb, fileData);
                _isWrite = true;
            }
            else
            {
                return;
            }
            break;
        }
        if (_isWrite)
        {
            NetCmdXmlParser.sWriteStringToFile(outFilePath, sb);
        }
    }