Beispiel #1
0
        private DataTable ReadList(BinaryReader br, ElementsList list)
        {
            var table = new DataTable(list.Name);

            foreach (var type in list.Types)
            {
                var column = new DataColumn(type.Name, type.NormalType)
                {
                    DefaultValue = type.DefaultValue,
                    AllowDBNull  = false
                };

                table.Columns.Add(column);
            }

            if (!list.Types.Any())
            {
                return(table);
            }

            var length = br.ReadInt32();

            for (var i = 0; i < length; i++)
            {
                table.Rows.Add(ReadItem(br, table, list.Types));
            }

            return(table);
        }
Beispiel #2
0
        private List <byte[]> ReadSkip(BinaryReader br, ElementsList list)
        {
            var vals = new List <byte[]>();

            switch (list.Skip)
            {
            case "AUTO":
                vals.Add(br.ReadBytes(4));
                var count = br.ReadInt32();
                vals.Add(BitConverter.GetBytes(count));
                vals.Add(br.ReadBytes(count));
                count = br.ReadInt32();
                while (count <= 0 || count > 10000)
                {
                    vals.Add(BitConverter.GetBytes(count));
                    count = br.ReadInt32();
                }
                br.BaseStream.Position -= 4;
                break;

            case "RAW":
                var rCount = br.ReadInt32();
                vals.Add(BitConverter.GetBytes(rCount));
                for (var i = 0; i < rCount; i++)
                {
                    vals.Add(br.ReadBytes(132));
                    var count2 = br.ReadInt32();
                    vals.Add(BitConverter.GetBytes(count2));
                    for (var i2 = 0; i2 < count2; i2++)
                    {
                        vals.Add(br.ReadBytes(8));
                        var l = br.ReadInt32();
                        vals.Add(BitConverter.GetBytes(l));
                        vals.Add(br.ReadBytes(l * 2));
                        var count3 = br.ReadInt32();
                        vals.Add(BitConverter.GetBytes(count3));
                        vals.Add(br.ReadBytes(count3 * 136));
                    }
                }
                break;

            default:
                vals.Add(br.ReadBytes(int.Parse(list.Skip)));
                break;
            }
            return(vals);
        }
Beispiel #3
0
        private void WriteTable(ElementsList list, BinaryWriter _binaryWriter)
        {
            if (Elements.SkipValues.ContainsKey(list))
            {
                foreach (var bytese in Elements.SkipValues[list])
                {
                    _binaryWriter.Write(bytese);
                }
            }

            var values = Elements.Data.Tables[list.Name].Rows;

            if (list.Skip != "RAW")
            {
                _binaryWriter.Write(values.Count);
            }

            foreach (DataRow value in values)
            {
                WriteRow(value, list.Types, _binaryWriter);
            }
        }
Beispiel #4
0
 /// <summary>
 /// Search unique identifier in the list
 /// If the ID is not found - will return -1
 /// </summary>
 /// <param name="list">there list</param>
 /// <param name="MaxID">finish ID</param>
 /// <returns>unique identifier or -1</returns>
 public int GetFreeID(ElementsList list, int MaxID) =>
 GetFreeID(GetAllRows(list), MaxID);
Beispiel #5
0
 /// <summary>
 /// It returns all rows from these list
 /// </summary>
 /// <param name="list">these lists</param>
 /// <returns>All rows</returns>
 public IEnumerable <DataRow> GetAllRows(ElementsList list) =>
 Data.Tables[list.Name].Select();