Beispiel #1
0
        static void CheckAllTabFileDataWithLua()
        {
            Lua luaVm = new Lua();

            DirectoryInfo dir = new DirectoryInfo(Config.Instance.GetParam(Config.SrcTabFilePath));

            FileInfo[] files      = dir.GetFiles("*.txt", SearchOption.AllDirectories);
            int        filesCount = files.Length;

            for (int i = 0; i < filesCount; i++)
            {
                FileInfo fileInfo   = files[i];
                bool     isInFilter = Config.Instance.IsInDataCheckerFilter(fileInfo.Name);
                if (isInFilter)
                {
                    continue;
                }

                System.Console.WriteLine("(" + i + "/" + filesCount + ")加载原始表格---->" + fileInfo.Name);
                FileStream   fs      = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader sr      = new StreamReader(fs);
                string       content = sr.ReadToEnd();
                sr.Close();
                fs.Close();

                TabFile tabFile = new TabFile();
                string  ret     = tabFile.Check(content);
                if (!string.IsNullOrEmpty(ret))
                {
                    System.Console.WriteLine(fileInfo.Name + "---->表格存在错误,无法检查!错误:" + ret);
                    return;
                }

                LuaFile luaFile = new LuaFile();
                luaFile.UnpackFromTabFile(tabFile, true);
                string       fileName          = fileInfo.Name.Replace(".txt", "");
                string       exportContent     = luaFile.ExportDataLuaFile(fileName, "Data");
                UTF8Encoding utf8Encoding      = new UTF8Encoding();
                string       utf8ExportContent = utf8Encoding.GetString(Encoding.ASCII.GetBytes(exportContent));
                luaVm.DoString(utf8ExportContent);
            }
            System.Console.WriteLine("加载数据完成");
            luaVm.DoFile(System.Environment.CurrentDirectory + "\\CheckList\\checklist.lua");
        }
Beispiel #2
0
        public List <TabFile.Column> GetTabFileColumn(string name, string key)
        {
            TabFile tabFile = GetTabFile(name);

            if (tabFile == null)
            {
                return(null);
            }

            string columnParent = null;
            string columnName   = null;
            int    index        = key.IndexOf('.');

            if (index == -1)
            {
                columnParent = null;
                columnName   = key;
            }
            else
            {
                columnParent = key.Substring(0, index);
                columnName   = key.Substring(index + 1);
            }

            List <TabFile.Column> ret = new List <TabFile.Column>();

            for (int i = 0; i < tabFile.columns.Count; i++)
            {
                TabFile.Column column = tabFile.columns[i];
                //  if (column.head.parent == columnParent && column.head.name == columnName)
                if (column.head.name == columnName)
                {
                    ret.Add(column);
                }
            }

            if (ret == null || ret.Count == 0)
            {
                System.Console.WriteLine(key + "标识不存在,请检查checklist_" + name);
            }
            return(ret);
        }
Beispiel #3
0
        public bool UnpackFromTabFile(string fileName, TabFile tabfile)
        {
            curTabFile    = tabfile;
            this.fileName = fileName.Substring(0, 1).ToUpper() + fileName.Substring(1);
            CSStruct     curStruct     = null;
            CSListStruct curListSturct = null;

            for (int i = 0; i < tabfile.columns.Count; i++)
            {
                TabFile.Column column = tabfile.columns[i];
                if (!column.head.clientExport)
                {
                    continue;
                }

                switch (column.head.type)
                {
                case TypeDef.IntType:
                case TypeDef.BoolType:
                case TypeDef.FloatType:
                case TypeDef.StringType:
                case TypeDef.ListIntType:
                case TypeDef.ListFloatType:
                case TypeDef.ListStringType:
                case TypeDef.LuaTableType:
                    CSVaribles varible = new CSVaribles();
                    varible.type = column.head.type;
                    varible.name = column.head.name;
                    if (curStruct != null)
                    {
                        if (curStruct.NotContains(varible))
                        {
                            curStruct.varibles.Add(varible);
                        }
                    }
                    else
                    {
                        varibles.Add(varible);
                    }
                    break;

                case TypeDef.StructType:
                    if (!string.IsNullOrEmpty(column.head.name))
                    {
                        if (curStruct != null)
                        {
                            System.Console.WriteLine("struct异常,列:" + (i + 1));
                            return(false);
                        }
                        if (curListSturct == null)
                        {
                            curStruct      = new CSStruct();
                            curStruct.name = column.head.name;
                            structs.Add(curStruct);
                        }
                        else
                        {
                            if (curListSturct.csStruct == null)
                            {
                                curStruct              = new CSStruct();
                                curStruct.name         = curListSturct.name;
                                curListSturct.csStruct = curStruct;
                            }
                            curStruct = curListSturct.csStruct;
                            curListSturct.count++;
                        }
                    }
                    else
                    {
                        if (curStruct == null)
                        {
                            System.Console.WriteLine("struct异常,列:" + (i + 1));
                            return(false);
                        }

                        if (curListSturct == null)
                        {
                            varible          = new CSVaribles();
                            varible.type     = column.head.type;
                            varible.csStruct = curStruct;
                            varibles.Add(varible);
                        }
                        curStruct = null;
                    }
                    break;

                case TypeDef.ListType:
                    if (!string.IsNullOrEmpty(column.head.name))
                    {
                        if (curListSturct != null)
                        {
                            System.Console.WriteLine("list异常,列:" + (i + 1));
                            return(false);
                        }
                        curListSturct      = new CSListStruct();
                        curListSturct.name = column.head.name;
                        structLists.Add(curListSturct);
                    }
                    else
                    {
                        if (curListSturct == null)
                        {
                            System.Console.WriteLine("struct异常,列:" + (i + 1));
                            return(false);
                        }

                        varible              = new CSVaribles();
                        varible.type         = column.head.type;
                        varible.csListStruct = curListSturct;
                        varibles.Add(varible);
                        curListSturct = null;
                    }
                    break;

                default:
                    System.Console.WriteLine(i + ":不支持的数据类型:" + column.head.type + "," + column.head.name);
                    break;
                }
            }
            return(true);
        }
Beispiel #4
0
        static void SingleExport(string filePath)
        {
            FileInfo   fileInfo = new FileInfo(filePath);
            FileStream fs       = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

            byte[] temp = new byte[fs.Length];
            fs.Read(temp, 0, (int)fs.Length);

            StreamReader sr      = new StreamReader(fs);
            string       content = GetText(temp);

            sr.Close();
            fs.Close();
            TabFile tabFile = new TabFile();
            string  ret     = tabFile.Check(content);

            if (!string.IsNullOrEmpty(ret))
            {
                System.Console.WriteLine(fileInfo.Name + "---->导表失败!错误:" + ret);
                return;
            }

            List <Config.ExportInfo> exportInfoList = Config.Instance.GetExportInfo(fileInfo.Directory.Name);

            for (int i = 0; i < exportInfoList.Count; i++)
            {
                Config.ExportInfo info     = exportInfoList[i];
                string            fileName = fileInfo.Name.Replace(".txt", "");
                string            dirName  = "";
                if (!string.IsNullOrEmpty(info.dirName))
                {
                    dirName = "/" + info.dirName;
                }

                string exportContent = null;
                switch (info.type)
                {
                case Config.ExportType.CSFile:
                    if (!string.IsNullOrEmpty(info.param))
                    {
                        fileName = info.param;
                    }
                    CSFile csFile = new CSFile();
                    csFile.UnpackFromTabFile(fileName, tabFile);
                    string csTemplate = Config.Instance.GetCSTemplate(csFile.fileName);
                    exportContent = csFile.ExportStructCSFile(csTemplate);
                    string csFilePath = Config.Instance.GetParam(Config.OutputCSFilePath) + dirName + "/" + csFile.fileName + ".cs";
                    SaveFile(csFilePath, exportContent, Encoding.UTF8);
                    break;

                case Config.ExportType.DataTabFile:
                    exportContent = tabFile.ExportDataTabFile();
                    string tabFilePath = Config.Instance.GetParam(Config.OutputTabFilePath) + dirName + "/" + fileName + ".txt";
                    SaveFile(tabFilePath, exportContent, Encoding.UTF8);
                    break;

                case Config.ExportType.Lua:
                    string moduleName = null;
                    if (!string.IsNullOrEmpty(info.param))
                    {
                        moduleName = info.param;
                    }
                    LuaFile luaFile = new LuaFile();
                    luaFile.UnpackFromTabFile(tabFile);
                    exportContent = luaFile.ExportDataLuaFile(fileName, moduleName);
                    string luaFilePath = Config.Instance.GetParam(Config.OutputLuaFilePath) + dirName + "/" + fileName + ".lua";
                    SaveFile(luaFilePath, exportContent, Encoding.UTF8);
                    break;
                }
            }
            System.Console.WriteLine(fileInfo.Name + "---->导表完成!");
        }
Beispiel #5
0
        public bool UnpackFromTabFile(TabFile tabfile, bool forceAll = false)
        {
            List <LuaStruct> structs = new List <LuaStruct>();

            for (int i = 0; i < tabfile.columns[0].data.Count; i++)
            {
                StringBuilder line = new StringBuilder();
                lines.Add(line);
                LuaStruct structTmp = new LuaStruct();
                structs.Add(structTmp);
            }
            bool isInList = false;

            for (int i = 0; i < tabfile.columns.Count; i++)
            {
                TabFile.Column column = tabfile.columns[i];
                for (int j = 0; j < column.data.Count; j++)
                {
                    StringBuilder line      = lines[j];
                    LuaStruct     structTmp = structs[j];
                    string        data      = column.data[j];
                    if (i == 0)
                    {
                        line.Append("[" + data + "] = {");
                    }

                    if (column.head.serverExport || forceAll)
                    {
                        switch (column.head.type)
                        {
                        case TypeDef.IntType:
                            int intData = 0;
                            int.TryParse(data, out intData);
                            if (!isInList)
                            {
                                line.Append(column.head.name + "=" + intData + ",");
                            }
                            else
                            {
                                if (intData != 0)
                                {
                                    structTmp.hasData = true;
                                }
                                structTmp.str.Append(column.head.name + "=" + intData + ",");
                            }
                            break;

                        case TypeDef.BoolType:
                            string str      = data.ToLower();
                            bool   boolData = false;
                            if (!string.IsNullOrEmpty(str) && str != "0" && str != "false")
                            {
                                boolData = true;
                            }
                            string boolStr = boolData.ToString().ToLower();
                            if (!isInList)
                            {
                                line.Append(column.head.name + "=" + boolStr + ",");
                            }
                            else
                            {
                                if (boolData)
                                {
                                    structTmp.hasData = true;
                                }
                                structTmp.str.Append(column.head.name + "=" + boolStr + ",");
                            }
                            break;

                        case TypeDef.FloatType:
                            float floatData = 0;
                            float.TryParse(data, out floatData);
                            string floatStr = string.Format("{0}", floatData);
                            if (!isInList)
                            {
                                line.Append(column.head.name + "=" + floatStr + ",");
                            }
                            else
                            {
                                if (floatData != 0)
                                {
                                    structTmp.hasData = true;
                                }
                                structTmp.str.Append(column.head.name + "=" + floatStr + ",");
                            }
                            break;

                        case TypeDef.StringType:
                            if (!string.IsNullOrEmpty(data))
                            {
                                string strData = data.TrimStart('"');
                                strData = strData.TrimEnd('"');
                                strData = strData.Replace("\\", "\\\\");
                                strData = strData.Replace("\"", "\\\"");
                                if (!isInList)
                                {
                                    line.Append(column.head.name + "=\"" + strData + "\",");
                                }
                                else
                                {
                                    structTmp.hasData = true;
                                    structTmp.str.Append(column.head.name + "=\"" + strData + "\",");
                                }
                            }
                            break;

                        case TypeDef.ListIntType:
                        case TypeDef.ListFloatType:
                            string strData2 = data.TrimStart('"');
                            strData2 = strData2.TrimEnd('"');
                            if (!isInList)
                            {
                                line.Append(column.head.name + "={" + strData2 + "},");
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(data))
                                {
                                    structTmp.hasData = true;
                                    structTmp.str.Append(column.head.name + "={" + strData2 + "},");
                                }
                            }
                            break;

                        case TypeDef.ListStringType:
                            if (!string.IsNullOrEmpty(data))
                            {
                                string strData = data.TrimStart('"');
                                strData = strData.TrimEnd('"');
                                string[] param         = strData.Split(',');
                                string   strDataResult = "";
                                for (int k = 0; k < param.Length; k++)
                                {
                                    strDataResult += "\"" + param[k] + "\"";
                                    if (k != param.Length - 1)
                                    {
                                        strDataResult += ",";
                                    }
                                }
                                if (!isInList)
                                {
                                    line.Append(column.head.name + "={" + strDataResult + "},");
                                }
                                else
                                {
                                    structTmp.hasData = true;
                                    structTmp.str.Append(column.head.name + "={" + strDataResult + "},");
                                }
                            }
                            break;

                        case TypeDef.StructType:
                            if (!string.IsNullOrEmpty(column.head.name))
                            {
                                structTmp.str     = new StringBuilder();
                                structTmp.hasData = false;
                                if (isInList)
                                {
                                    structTmp.str.Append("{");
                                }
                                else
                                {
                                    line.Append(column.head.name + "={");
                                }
                            }
                            else
                            {
                                if (isInList)
                                {
                                    structTmp.str.Replace(",", "", structTmp.str.Length - 1, 1);
                                    structTmp.str.Append("},");
                                    if (structTmp.hasData)
                                    {
                                        line.Append(structTmp.str.ToString());
                                    }
                                }
                                else
                                {
                                    line.Replace(",", "", line.Length - 1, 1);
                                    line.Append("},");
                                }
                            }
                            break;

                        case TypeDef.ListType:
                            if (!string.IsNullOrEmpty(column.head.name))
                            {
                                line.Append(column.head.name + "={");
                                isInList = true;
                            }
                            else
                            {
                                line.Replace(",", "", line.Length - 1, 1);
                                line.Append("},");
                                isInList = false;
                            }
                            break;

                        case TypeDef.LuaTableType:
                            if (!string.IsNullOrEmpty(data))
                            {
                                string strData = data.TrimStart('"');
                                strData = strData.TrimEnd('"');
                                if (!isInList)
                                {
                                    line.Append(column.head.name + "=" + strData + ",");
                                }
                                else
                                {
                                    structTmp.hasData = true;
                                    structTmp.str.Append(column.head.name + "=" + strData + ",");
                                }
                            }
                            break;
                        }
                    }

                    if (i == tabfile.columns.Count - 1)
                    {
                        line.Replace(",", "", line.Length - 1, 1);
                        line.Append("},");
                    }
                }
            }
            return(true);
        }