Exemple #1
0
 public bool NotContains(CSVaribles varible)
 {
     for (int i = 0; i < varibles.Count; i++)
     {
         if (varibles[i] == varible)
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #2
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);
        }